createTriangleMesh未处理的异常

时间:2012-07-04 13:48:33

标签: c++ opengl physx

我正在使用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 for循环与'mesh-&gt; mFaces [i] .mIndices [j]'的点是mNumIndices与mIndices有关

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

1 个答案:

答案 0 :(得分:1)

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