几天前我建立我的计算机和安装,因为一些硬件更改Windows 8中的新副本。 等等我改变从的Radeon HD 7870显卡Nvidia的GTX 660。
重新设置的Visual Studio 11后,我从网上下载Github上我最后的OpenGL项目和重建整个项目。 我跑的应用出来的Visual Studio,它坠毁因为nvoglv32.dll
。
0000005:在0x5D9F74E3(nvoglv32.dll)在Application.exe未处理的异常访问冲突读取位置00000000。
在旧环境中的应用发挥预期。 我并没有改变项目或源代码的任何东西。 唯一的区别是在Visual Studio制作安装的语言 - 英语,现在的语言和之前是德国人。 因此,我创建了一个新的项目,并通过了所有的设置,但仍然是错误。
为了找到相关的崩溃,我注意到,所有的初始化(窗口,着色器,...)成功,错误是在绘图调用glDrawElements()
这referrs我递延渲染的gemoetry通。
一些研制后,我发现, nvoglv32.dll
是来自Nvidia,是关于一个叫服务Compatible OpenGL ICD
。 这是否在某种程度上意味着我的应用程序将在兼容模式下运行? 这听起来像一个模式,支持旧的应用程序,我想我的在常规模式下运行! 顺便说一句我安装我的显卡的最新的稳定的驱动程序。
说实话,我不知道如何处理解决这个崩溃。 这是什么原因,以及如何解决它?
更新:我发现了一个在GeForce论坛后我的问题。 虽然没有回复,则作者日期可以通过改变两个OpenGL调用顺序解决问题。
大家好,
闲逛用了几个小时我的应用程序的源代码后,我发现,调用函数...
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, #) glBindVertexArray(#)
...的顺序导致nvoglv64.dll崩溃。 要扭转这些调用的顺序...
glBindVertexArray(#) glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, #)
......防止崩溃,似乎是乖巧。
干杯,罗伯特·格拉夫
因为我不使用顶点数组,我不能简单的这样做修复,但有可能是一个类似的问题。 我将报告我的进步。
更新:我绝对不知道如何解决我的问题。 我尝试不同的视频驱动程序版本,但它没有什么区别。 我使用最少的着色器和简单的向前渲染完全重写渲染器。 但窗台崩溃发生在第一次抽签通话。