Salut à tous,

Alors voilà à quoi j'ai perdu mon temps toute la journée et pourquoi je m'arrache les cheveux blotti sur moi même dans un coin de ma piole:

Voici un extrait de code qui marche:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
NxTriangleMeshDesc bunnyDesc;
bunnyDesc.numVertices = BUNNY_NBVERTICES;
bunnyDesc.numTriangles = BUNNY_NBFACES;
bunnyDesc.pointStrideBytes = sizeof(NxVec3);
bunnyDesc.triangleStrideBytes = 3*sizeof(NxU32);
bunnyDesc.points = gBunnyVertices;
bunnyDesc.triangles = gBunnyTriangles;
bunnyDesc.flags = 0;
bunnyTriangleMesh = gPhysicsSDK->createTriangleMesh(bunnyDesc);
gBunnyVertices démarre comme ça:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
float gBunnyVertices[]={
	-0.334392f,0.133007f,0.062259f,
	-0.350189f,0.150354f,-0.147769f,
et gBunnyTriangles est déclaré comme ça:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
int gBunnyTriangles[]={
	126,134,133,
	342,138,134,
Bon bref, rien de sorcier, alors j'ai voulu appliquer ce code. Alors comme je n'ai pas les tableaux comme dans l'exemple, j'ai du les créer.

Donc je commence par allouer l'espace dans la mémoire:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
int* indexTab = (int*)(malloc(_mesh->GetNumFaces() * 3 * sizeof(int)));
float* vertexTab = (float*)(malloc(_mesh->GetNumVertices() * 3 * sizeof(float)));
Ensuite je les rempli avec ce que j'ai
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
for(int i = 0; i < _mesh->GetNumVertices(); i++)
{
	memcpy(vertexTab + (i * 3), (BYTE*)VB + i * _mesh->GetNumBytesPerVertex(), 3*sizeof(float));
}
 
for(int i = 0; i < _mesh->GetNumFaces()*3; i++)
{
	indexTab[i] = IB[i];
}
Jusqu'ici, tout va bien, j'ai déclaré des tableaux de taille constantes que j'ai rempli avec memcpy depuis mes tableaux que je viens de créer et remplir, j'ai contrôlé les valeurs obtenues, tout est correct.
Donc j'ai maintenant les deux tableaux comme dans l'exemple, j'ai plus qu'à définir les paramètres comme l'exemple et appeler la fonction:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
NxTriangleMeshDesc levelDesc;
levelDesc.numVertices = _mesh->GetNumVertices();
levelDesc.numTriangles = _mesh->GetNumFaces();
levelDesc.pointStrideBytes = sizeof(NxVec3);
levelDesc.triangleStrideBytes = 3*sizeof(NxU32);
levelDesc.points = vertexTab;
levelDesc.triangles = indexTab;
levelDesc.flags = 0;
 
NxTriangleMeshShapeDesc levelShapeDesc;
levelShapeDesc.meshData = Physics::GetInstance()->GetSDK()->createTriangleMesh(levelDesc);
Voilà, je vois aucune différence avec le code de l'exemple et pourtant...
J'obtient une erreur d'exécution lors de createTriangleMesh():

Unhandled exception at 0x100745db in BK.exe: 0xC0000005: Access violation reading location 0x00000274.

Je précise aussi que l'exemple, j'ai pu le compiler et l'exécuter sans soucis...

Quelqu'un voit quelque chose qui cloche? à part l'erreur :p

Merci,

A bientôt