2
PhysX, OpenGL 및 assimp를 사용하고 있습니다. 내가 Assimp를 사용하여 마지막 줄createTriangleMesh 처리되지 않은 예외
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);
}
에서 '처리되지 않은 예외 ..... 액세스 위반 읽기 위치은 0x00000'을 얻고 :: 수입 나는 .x를 이있다 (24 개)의 정점 (12 개)의 얼굴에 간단한 큐브를 읽고 . 과 루프 2를 사용 점 'mesh-> mFaces [I] .mIndices [J]를'mIndices
I는 함수 CreateActor 불완전 알으로 algong mNumIndices이 있다는했으나 오류에 있던 ' createTriangleMesh '(마지막 줄) 그래서 나머지는 생략했습니다.
'gPhysicsSDK'는 언제 초기화됩니까? 내 첫 번째 추측은 null 포인터입니다. –
LOL, 네 말이 맞아. 믿을 수가 없어. 실제로 삼각형을 assimp-mesh-> face (for 루프없이)와 동일시하기 전에 요리를하지 못했습니다. 그래서 샘플 코드를 복사했는데 InitNx ('Oh GOD')를 건너 뛰었습니다. –
어쨌든 고맙습니다 ... 건배 :) –