Crash à l'appel en nvoglv32.dll sur la nouvelle carte vidéo

Il y a quelques jours-je configurer mon ordinateur et installé une nouvelle copie de Windows 8 en raison de certaines modifications sur le matériel. Entre autres, j'ai changé la carte vidéo Radeon HD 7870, la Nvidia GTX 660.

Après la mise en place de Visual Studio 11 encore une fois, j'ai téléchargé mon dernier OpenGL projet à partir de Github et reconstruit l'ensemble du projet. J'ai couru à l'application de Visual Studio et il s'est écrasé à cause de nvoglv32.dll.

Exception non gérée à 0x5D9F74E3 (nvoglv32.dll) Application.exe: 0xC0000005: violation d'Accès lecture de l'emplacement 0x00000000.

Dans l'ancien environnement de l'application a fonctionné comme prévu. Je n'ai rien changé du projet ou du code source. La seule différence était la langue de l'Visual Studio domaines de l'installation qui est en anglais maintenant, et a été d'allemand avant de. Donc j'ai créé un nouveau projet et de l'adopté de tous les paramètres, mais l'erreur reste.

Afin de localiser la panne, j'ai remarqué que tous initialisation (fenêtre, shaders,...), a réussi, et l'erreur est à l'appel de glDrawElements() qui fait référence à la gemoetry passer de mon moteur de rendu différé.

Après quelques recherche j'ai découvert que nvoglv32.dll est de Nvidia et est sur un des services Compatible OpenGL ICD. N'est que d'une certaine façon dire que mon application fonctionne dans un mode compatible? Qui sonne comme un mode de soutien des applications anciennes et je veux mine de s'exécuter dans un mode régulier! Au fait, j'ai installé les derniers pilotes de l'écurie pour ma carte vidéo.

Pour être honnête, je n'ai pas la moindre idée de comment l'approche de la résolution de ce crash. Quelle est la cause et comment y remédier?

Mise à jour: j'ai trouvé un post sur Geforce Forums au sujet de mon problème. Bien qu'il n'y a pas eu de réponse, l'auteur pourrait résoudre le problème en modifiant l'ordre des deux appels OpenGL.

Salut à tous,

Après avoir farfouillé avec mon code source de l'application pour quelques heures, j'ai trouvé que le fait d'appeler les fonctions...

glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, #)
glBindVertexArray(#)

...dans cet ordre les causes de l'accident nvoglv64.dll.
Inverser l'ordre de ces appels à...

glBindVertexArray(#)
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, #)

...évite le crash, et semble s'être bien comportés.

Cheers,
Robert Graf

Depuis que je ne pas utiliser les vertex arrays je ne peux pas simple de faire ce correctif, mais il pourrait y avoir un problème similaire. Je vais faire part de mes progrès.

Mise à jour: je n'ai absolument aucune idée de comment résoudre mon problème. J'ai essayé vidéo différentes versions de pilote, mais il ne fait aucune différence. J'ai complètement réécrit le moteur de rendu en utilisant un minimum de shaders et simple de l'avant le rendu. Mais l'accident de seuil se produit lors du premier appel.

J'ai commencé à avoir ce après le passage d'un écran à un TÉLÉVISEUR

OriginalL'auteur danijar | 2013-02-23