Исключение доступа CookTriangleMesh ⇐ C++
-
Anonymous
Исключение доступа CookTriangleMesh
PxTriangleMesh* PhysX::CreateTriangleMesh(const PxVec3* verts, const PxU32 numVerts , const PxU32* индексы, const PxU32 numIndexes, PxPhysics* физика, PxCooking* кулинария) { // Создаем дескриптор для треугольной сетки PxTriangleMeshDesc meshDesc; meshDesc.points.count = numVerts; meshDesc.points.stride = sizeof(PxVec3); meshDesc.points.data = верт; meshDesc.triangles.count = numIndexes/3; meshDesc.triangles.stride = 3 * sizeof(PxU32); meshDesc.triangles.data = индексы; // для предотвращения переполнения стека PxU32 AssessmentVertSize = numVerts * sizeof(PxVec3) * 1,5; PxU32 оцененныйIndexSize = numIndexes * sizeof(PxU32) * 1,5; PxU32 начальныйРазмер = оцененныйVertSize + оцененныйIndexSize; CustomPhysXMemory writeBuffer(initialSize); //PxDefaultMemoryOutputStream writeBuffer; bool status = приготовление пищи->cookTriangleMesh(meshDesc, writeBuffer); если (!статус) вернуть нульптр; PxDefaultMemoryInputData readBuffer(writeBuffer.getData(), writeBuffer.getSize()); PxTriangleMesh* треугольникMesh = физика->createTriangleMesh(readBuffer); вернуть треугольникMesh; } Я хочу создать коллайдер для создания сетки этой нагрузки с помощью assimp, поэтому я создал physX-треугольную сетку. Во многих ситуациях это работает Но иногда в CookTriangleMesh Исключение, созданное по адресу 0x00007FFD322F259E (PhysXCooking_64.dll) в Client.exe: 0xC0000005: местоположение чтения нарушения прав доступа 0x0000019F69AA8000. происходит.
Я беспокоился о емкости буфера и дал ему пространство в 1,5 раза, и я проверил ((physx::PxSimpleTriangleMesh)&meshDesc),nd {points={count=82772 } треугольники={count=43798 } flags={mBits=0 } } writeBuffer.mBuffer.capacity() 2278260 Эти двое всегда заканчивались одинаковым успехом или неудачей..
Поэтому я понятия не имею, в чем проблема. Может ли мне помочь кто-нибудь, кто знает проблему и знает, как ее решить?
PxTriangleMesh* PhysX::CreateTriangleMesh(const PxVec3* verts, const PxU32 numVerts , const PxU32* индексы, const PxU32 numIndexes, PxPhysics* физика, PxCooking* кулинария) { // Создаем дескриптор для треугольной сетки PxTriangleMeshDesc meshDesc; meshDesc.points.count = numVerts; meshDesc.points.stride = sizeof(PxVec3); meshDesc.points.data = верт; meshDesc.triangles.count = numIndexes/3; meshDesc.triangles.stride = 3 * sizeof(PxU32); meshDesc.triangles.data = индексы; // для предотвращения переполнения стека PxU32 AssessmentVertSize = numVerts * sizeof(PxVec3) * 1,5; PxU32 оцененныйIndexSize = numIndexes * sizeof(PxU32) * 1,5; PxU32 начальныйРазмер = оцененныйVertSize + оцененныйIndexSize; CustomPhysXMemory writeBuffer(initialSize); //PxDefaultMemoryOutputStream writeBuffer; bool status = приготовление пищи->cookTriangleMesh(meshDesc, writeBuffer); если (!статус) вернуть нульптр; PxDefaultMemoryInputData readBuffer(writeBuffer.getData(), writeBuffer.getSize()); PxTriangleMesh* треугольникMesh = физика->createTriangleMesh(readBuffer); вернуть треугольникMesh; } Я хочу создать коллайдер для создания сетки этой нагрузки с помощью assimp, поэтому я создал physX-треугольную сетку. Во многих ситуациях это работает Но иногда в CookTriangleMesh Исключение, созданное по адресу 0x00007FFD322F259E (PhysXCooking_64.dll) в Client.exe: 0xC0000005: местоположение чтения нарушения прав доступа 0x0000019F69AA8000. происходит.
Я беспокоился о емкости буфера и дал ему пространство в 1,5 раза, и я проверил ((physx::PxSimpleTriangleMesh)&meshDesc),nd {points={count=82772 } треугольники={count=43798 } flags={mBits=0 } } writeBuffer.mBuffer.capacity() 2278260 Эти двое всегда заканчивались одинаковым успехом или неудачей..
Поэтому я понятия не имею, в чем проблема. Может ли мне помочь кто-нибудь, кто знает проблему и знает, как ее решить?
Мобильная версия