diff --git a/gltf/gltfpack.cpp b/gltf/gltfpack.cpp index 85c6ad0b..4f68ad5c 100644 --- a/gltf/gltfpack.cpp +++ b/gltf/gltfpack.cpp @@ -87,12 +87,14 @@ static void printMeshStats(const std::vector& 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& 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()); }