2

我正在使用 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 个面。使用 2 for 循环与 'mesh->mFaces[i].mIndices[j]' 的要点是有一个 mNumIndices 与 mIndices

我知道函数 CreateActor 不完整,但错误出现在“createTriangleMesh”(最后一行)上,所以我省略了休息。

4

1 回答 1

1

gPhysicsSDK 为 NULL,所以这就是整个问题。对于任何使用 PhysX 并希望加载各种 3D 模型(.3DS、.X、.obj 等)的人,您可以方便地找到上面的代码(除非您必须遍历所有 aimesh),google assimp。
谢谢泰勒

于 2012-07-05T07:43:20.013 回答