Skip to content

Commit abc4c36

Browse files
committed
gltfpack: Fix triangle count computation for non-triangle meshes
This affected lines/points including debug meshes that simplification debugging produces.
1 parent 477de36 commit abc4c36

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

gltf/gltfpack.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -87,12 +87,14 @@ static void printMeshStats(const std::vector<Mesh>& meshes, const char* name)
8787
{
8888
const Mesh& mesh = meshes[i];
8989

90-
mesh_triangles += mesh.indices.size() / 3;
90+
size_t triangles = mesh.type == cgltf_primitive_type_triangles ? mesh.indices.size() / 3 : 0;
91+
92+
mesh_triangles += triangles;
9193
mesh_vertices += mesh.streams.empty() ? 0 : mesh.streams[0].data.size();
9294

9395
size_t instances = std::max(size_t(1), mesh.nodes.size() + mesh.instances.size());
9496

95-
total_triangles += mesh.indices.size() / 3 * instances;
97+
total_triangles += triangles * instances;
9698
total_instances += instances;
9799
total_draws += std::max(size_t(1), mesh.nodes.size());
98100
}
@@ -199,9 +201,10 @@ static bool printReport(const char* path, const std::vector<BufferView>& views,
199201
{
200202
const Mesh& mesh = meshes[i];
201203

204+
size_t triangles = mesh.type == cgltf_primitive_type_triangles ? mesh.indices.size() / 3 : 0;
202205
size_t instances = std::max(size_t(1), mesh.nodes.size() + mesh.instances.size());
203206

204-
total_triangles += mesh.indices.size() / 3 * instances;
207+
total_triangles += triangles * instances;
205208
total_instances += instances;
206209
total_draws += std::max(size_t(1), mesh.nodes.size());
207210
}

0 commit comments

Comments
 (0)