En passant en boucle tous les objets que je veux rendre dans mon moteur 3D, j'obtiens une erreur en essayant d'appeler
glDrawArrays(mesh->primitiveType, 0, mesh->vertexCount);
Parce qu'il essaie de lire à partir de l'emplacement 0x0000000, donc apparemment le pointeur lié à l'index mesh->vertexBuffer pointe vers zéro. Tout cela se passe dans ma classe RenderableObject. Les instances de cette classe ont un mesh qui leur est lié, et ce mesh contient un index qui devrait être lié au VertexArray. Mais apparemment
glBindBuffer(GL_ARRAY_BUFFER, mesh->vertexBuffer);
C'est un échec.
Ce qui est étrange, c'est qu'il fonctionne sur mon Mac et sur plusieurs autres ordinateurs Windows, mais pas sur cet ordinateur (Windows). Parce que je fais des tests, j'ai supprimé tous les modèles 3D et j'ai découvert que ce sont les primitives qui causent le problème. D'une certaine manière, le compilateur MSVC++ a "optimisé" mon code pour supprimer tout ce qui se trouve après l'exécution.
glGenBuffers(1, &CubeMesh.vertexBuffer);
Et c'est probablement pour ça que rien n'a été lié, ou du moins je le pensais. J'ai désactivé les optimisations de l'éditeur de liens et du compilateur, et j'ai pu constater que tous les points d'arrêt étaient atteints maintenant - mais j'obtiens toujours la même exception, et je ne sais absolument pas pourquoi ça ne fonctionne pas.
La source complète du projet peut être trouvée @ https://github.com/Wrap/TwinGame/tree/master/src Pour autant que je puisse dire, le problème se situe dans le fichier Primitives.cpp et/ou RenderableObject.cpp (en particulier la méthode RenderableObject::Draw() ;). Est-ce que j'essaie de lire quelque chose qui est protégé, qu'est-ce qui ne va pas avec la méthode LoadPrimitives(); ?
Merci d'avoir pris le temps de lire ceci.