I use assimp to load mesh data for my game and I was recently doing some optimization work on my rendering engine and I figured I should check to see how many vertices were actually being loaded. As it turns out I'm actually using more data indexing the meshes than I save by using indexed buffers. Here is my code:
#define IMPORT_OPTIONS aiProcess_RemoveComponent|\ aiProcess_OptimizeGraph|\ aiProcess_JoinIdenticalVertices|\ aiProcess_OptimizeMeshes|\ aiProcess_Triangulate|\ aiProcess_FlipUVs|\ aiProcess_CalcTangentSpace|\ aiProcess_SortByPType|\ aiProcess_ImproveCacheLocality Assimp::Importer importer; const aiScene* scene = importer.ReadFile(fname, IMPORT_OPTIONS); numTriangles = scene->mMeshes->mNumFaces; numVertices = scene->mMeshes->mNumVertices; numIndices = numTriangles * 3;
It seems that somehow numVertices and numIndices are almost the same give or take 100 vertices. For example I had 34907440 vertices and 34907512 indices. Any closed mesh should have three times as many Indices as vertices because a vertex should be shared by at least 3 triangles. I'm guessing that Assimp is doing something quite sinister behind the scenes and isn't merging vertices properly even though I specified aiProcess_JoinIdenticalVertices. Everthing is rendering properly but I feel this might be eating away my performance. Does anyone have any Idea what might be going on?