gltfpack: Fix triangle count computation for non-triangle meshes

This affected lines/points including debug meshes that simplification
debugging produces.
This commit is contained in:
Arseny Kapoulkine
2024-08-18 13:11:43 -07:00
parent 16712edc19
commit 9a0bea3aa8
+6 -3
View File
@@ -87,12 +87,14 @@ static void printMeshStats(const std::vector<Mesh>& meshes, const char* name)
{
const Mesh& mesh = meshes[i];
mesh_triangles += mesh.indices.size() / 3;
size_t triangles = mesh.type == cgltf_primitive_type_triangles ? mesh.indices.size() / 3 : 0;
mesh_triangles += triangles;
mesh_vertices += mesh.streams.empty() ? 0 : mesh.streams[0].data.size();
size_t instances = std::max(size_t(1), mesh.nodes.size() + mesh.instances.size());
total_triangles += mesh.indices.size() / 3 * instances;
total_triangles += triangles * instances;
total_instances += instances;
total_draws += std::max(size_t(1), mesh.nodes.size());
}
@@ -199,9 +201,10 @@ static bool printReport(const char* path, const std::vector<BufferView>& views,
{
const Mesh& mesh = meshes[i];
size_t triangles = mesh.type == cgltf_primitive_type_triangles ? mesh.indices.size() / 3 : 0;
size_t instances = std::max(size_t(1), mesh.nodes.size() + mesh.instances.size());
total_triangles += mesh.indices.size() / 3 * instances;
total_triangles += triangles * instances;
total_instances += instances;
total_draws += std::max(size_t(1), mesh.nodes.size());
}