Zawieszanie przy wywołaniu draw w nvoglv32.dll na nowej karcie wideo

Kilka dni temu skonfigurowałem komputer i zainstalowałem nową kopię systemu Windows 8 z powodu pewnych zmian sprzętowych. Między innymi zmieniłem kartę graficzną z Radeon HD 7870 na Nvidia GTX 660.

Po ponownym skonfigurowaniu programu Visual Studio 11 pobrałem ostatni projekt OpenGL z Github i przebudowałem cały projekt. Uruchomiłem aplikację z Visual Studio i spowodowała ona awarięnvoglv32.dll.

Nieobsługiwany wyjątek w 0x5D9F74E3 (nvoglv32.dll) w Application.exe: 0xC0000005: Lokalizacja odczytu naruszenia zasad dostępu 0x00000000.

W starym środowisku aplikacja działała zgodnie z oczekiwaniami. Nic nie zmieniłem w projekcie ani w kodzie źródłowym. Jedyną różnicą był język instalacji Visual Studio, który jest teraz w języku angielskim i był niemiecki. Dlatego utworzyłem nowy projekt i przyjęłem wszystkie ustawienia, ale błąd pozostaje.

Aby zlokalizować awarię, zauważyłem, że cała inicjalizacja (okno, shadery, ...) zakończyła się powodzeniem, a błąd występuje przy wywołaniu losowaniaglDrawElements() które odsyłają do przejścia gemoetry mojego odroczonego renderera.

Po kilku próbach dowiedziałem się o tymnvoglv32.dll pochodzi z Nvidii i dotyczy usług zwanychCompatible OpenGL ICD. Czy to w jakiś sposób oznacza, że ​​moja aplikacja działa w trybie zgodnym? To brzmi jak tryb obsługi starszych aplikacji i chcę, aby mój działał w zwykłym trybie! Przy okazji zainstalowałem najnowsze stabilne sterowniki dla mojej karty wideo.

Szczerze mówiąc, nie mam pojęcia, jak podejść do naprawienia tej awarii. Co może to spowodować i jak to naprawić?

Aktualizacja: znalazłempublikuj na forach Geforce o moim problemie. Chociaż nie było odpowiedzi, autor mógł rozwiązać problem, zmieniając kolejność dwóch wywołań OpenGL.

Cześć wszystkim,

Po kilku godzinach gry kodem źródłowym aplikacji odkryłem, że wywołanie funkcji ...

glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, #)
glBindVertexArray(#)

... w tej kolejności powoduje awarię pliku nvoglv64.dll. Odwracanie kolejności tych połączeń do ...

glBindVertexArray(#)
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, #)

... zapobiega awariom i wydaje się być dobrze zachowany.

Pozdrawiam, Robert Graf

Ponieważ nie używam tablic wierzchołków, nie mogę tego zrobić prosto, ale może być podobny problem. Zgłosię moje postępy.

Aktualizacja: Nie mam absolutnie żadnego pojęcia, jak rozwiązać mój problem. Próbowałem różnych wersji sterowników wideo, ale to nie ma znaczenia. Całkowicie przepisałem renderer używając minimalnych shaderów i prostego renderowania do przodu. Ale parapet pojawia się przy pierwszym wywołaniu.

questionAnswers(2)

yourAnswerToTheQuestion