我正在使用PhysX,OpenGL和assimp。我在最后一行收到“未处理的异常.....访问冲突读取位置0x00000”
void CreateActor(const aiScene *scene)
{
NxTriangleMeshDesc t;
aiMesh *mesh = scene->mMeshes[0];
t.numVertices = mesh->mNumVertices;
t.points = mesh->mVertices;
t.pointStrideBytes = sizeof(aiVector3D);
t.numTriangles = mesh->mNumFaces;
NxU32 *tr = new NxU32[mesh->mNumFaces*3];
NxU32 k=0;
for(NxU32 i=0;i<mesh->mNumFaces;i++)
for(int j=0;j<3;j++)
tr[k++]=mesh->mFaces[i].mIndices[j];
t.triangles = tr;
t.triangleStrideBytes = sizeof(NxU32)*3;
t.flags=0;
NxTriangleMeshShapeDesc terrainShapeDesc;
// Cooking from memory
InitCooking();
MemoryWriteBuffer buf;
bool status = CookTriangleMesh(t, buf);
MemoryReadBuffer readBuffer(buf.data);
gPhysicsSDK->createTriangleMesh(readBuffer);
}
使用Assimp::Importer我已经在.x中阅读了一个简单的多维数据集
它具有24个顶点,12个面。
在'mesh-> mFaces [i] .mIndices [j]'中使用2 for循环的要点是,有一个mNumIndices algong和mIndices
我知道函数CreateActor不完整,但是错误在“createTriangleMesh”(最后一行)上,所以我省略了休息。
最佳答案
gPhysicsSDK为NULL,所以这就是整个问题。
对于使用PhysX并希望加载各种3D模型(.3DS,.X,.obj等)的任何人,您都可以找到上面的方便代码(除非您必须遍历所有aimesh),google assimp。
谢谢泰勒