MCPcopy Create free account
hub / github.com/assimp/assimp / GetMemoryRequirements

Method GetMemoryRequirements

code/Common/Importer.cpp:1179–1279  ·  view source on GitHub ↗

------------------------------------------------------------------------------------------------ Get the memory requirements of the scene

Source from the content-addressed store, hash-verified

1177// ------------------------------------------------------------------------------------------------
1178// Get the memory requirements of the scene
1179void Importer::GetMemoryRequirements(aiMemoryInfo& in) const {
1180 ai_assert(nullptr != pimpl);
1181
1182 in = aiMemoryInfo();
1183 aiScene* mScene = pimpl->mScene;
1184
1185 // return if we have no scene loaded
1186 if (!mScene)
1187 return;
1188
1189 in.total = sizeof(aiScene);
1190
1191 // add all meshes
1192 for (unsigned int i = 0; i < mScene->mNumMeshes;++i) {
1193 in.meshes += sizeof(aiMesh);
1194 if (mScene->mMeshes[i]->HasPositions()) {
1195 in.meshes += sizeof(aiVector3D) * mScene->mMeshes[i]->mNumVertices;
1196 }
1197
1198 if (mScene->mMeshes[i]->HasNormals()) {
1199 in.meshes += sizeof(aiVector3D) * mScene->mMeshes[i]->mNumVertices;
1200 }
1201
1202 if (mScene->mMeshes[i]->HasTangentsAndBitangents()) {
1203 in.meshes += sizeof(aiVector3D) * mScene->mMeshes[i]->mNumVertices * 2;
1204 }
1205
1206 for (unsigned int a = 0; a < AI_MAX_NUMBER_OF_COLOR_SETS;++a) {
1207 if (mScene->mMeshes[i]->HasVertexColors(a)) {
1208 in.meshes += sizeof(aiColor4D) * mScene->mMeshes[i]->mNumVertices;
1209 } else {
1210 break;
1211 }
1212 }
1213 for (unsigned int a = 0; a < AI_MAX_NUMBER_OF_TEXTURECOORDS;++a) {
1214 if (mScene->mMeshes[i]->HasTextureCoords(a)) {
1215 in.meshes += sizeof(aiVector3D) * mScene->mMeshes[i]->mNumVertices;
1216 } else {
1217 break;
1218 }
1219 }
1220 if (mScene->mMeshes[i]->HasBones()) {
1221 in.meshes += sizeof(void*) * mScene->mMeshes[i]->mNumBones;
1222 for (unsigned int p = 0; p < mScene->mMeshes[i]->mNumBones;++p) {
1223 in.meshes += sizeof(aiBone);
1224 in.meshes += mScene->mMeshes[i]->mBones[p]->mNumWeights * sizeof(aiVertexWeight);
1225 }
1226 }
1227 in.meshes += (sizeof(aiFace) + 3 * sizeof(unsigned int))*mScene->mMeshes[i]->mNumFaces;
1228 }
1229 in.total += in.meshes;
1230
1231 // add all embedded textures
1232 for (unsigned int i = 0; i < mScene->mNumTextures;++i) {
1233 const aiTexture* pc = mScene->mTextures[i];
1234 in.textures += sizeof(aiTexture);
1235 if (pc->mHeight) {
1236 in.textures += 4 * pc->mHeight * pc->mWidth;

Callers 2

Assimp_InfoFunction · 0.80
aiGetMemoryRequirementsFunction · 0.80

Calls 8

aiMemoryInfoClass · 0.85
AddNodeWeightFunction · 0.85
HasBonesMethod · 0.80
HasPositionsMethod · 0.45
HasNormalsMethod · 0.45
HasVertexColorsMethod · 0.45
HasTextureCoordsMethod · 0.45

Tested by

no test coverage detected