Fallo al llamar al sorteo en nvoglv32.dll en una nueva tarjeta de video

Hace algunos días configuré mi computadora e instalé una nueva copia de Windows 8 debido a algunos cambios de hardware. Entre otros, cambié la tarjeta de video de Radeon HD 7870 a Nvidia GTX 660.

Después de configurar Visual Studio 11 nuevamente, descargué mi último proyecto OpenGL de Github y reconstruí todo el proyecto. Corrí la aplicación de Visual Studio y se estrelló debido anvoglv32.dll.

Excepción no controlada en 0x5D9F74E3 (nvoglv32.dll) en Application.exe: 0xC0000005: infracción de acceso que lee la ubicación 0x00000000.

En el entorno antiguo la aplicación funcionó como se esperaba. No he cambiado nada del proyecto o código fuente. La única diferencia era el idioma de la instalación de Visual Studio, que ahora es inglés y era alemán antes. Por lo tanto, creé un nuevo proyecto y adopté todas las configuraciones, pero el error permanece.

Para localizar la falla, noté que toda la inicialización (ventana, sombreadores, ...) tuvo éxito y el error está en la llamada de sorteoglDrawElements() que se refiere al pase de gemoetry de mi renderizador diferido.

Después de una investigación me di cuenta de quenvoglv32.dll es de Nvidia y se trata de un servicio llamadoCompatible OpenGL ICD. ¿Eso significa de alguna manera que mi aplicación se ejecuta en un modo compatible? ¡Eso suena como un modo para soportar aplicaciones antiguas y quiero que el mío se ejecute en un modo regular! Por cierto, instalé los últimos controladores estables para mi tarjeta de video.

Para ser honesto, no tengo ni idea de cómo abordar este problema. ¿Qué podría causarlo y cómo solucionarlo?

Actualización: he encontrado unpublicar en los foros de Geforce sobre mi problema Aunque no hubo respuesta, el autor pudo solucionar el problema cambiando el orden de dos llamadas OpenGL.

Hola a todos,

Después de buscar el código fuente de mi aplicación durante unas horas, descubrí que al llamar a las funciones ...

glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, #)
glBindVertexArray(#)

... en ese orden provoca el bloqueo en nvoglv64.dll. Invertir el orden de estas llamadas a ...

glBindVertexArray(#)
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, #)

... previene el choque y parece tener buen comportamiento.

Saludos, Robert Graf

Como no uso matrices de vértices, no puedo simplemente hacer esta corrección, pero podría haber un problema similar. Voy a informar de mi progreso.

Actualización: No tengo absolutamente ninguna idea de cómo resolver mi problema. Probé diferentes versiones de controladores de video, pero no hace ninguna diferencia. Reescribí por completo el renderizador utilizando un mínimo de sombreadores y una representación directa simple. Pero el umbral del accidente se produce en la primera convocatoria de sorteo.

Respuestas a la pregunta(2)

Su respuesta a la pregunta