Kai*_*ack 5 c opengl glfw glad
以下 OpenGL/GLFW/GLAD 代码(MCVE 版本)使进程崩溃,并在 nvoglv64.dll 中出现以下访问冲突异常:
0x00007FFC731F586F (nvoglv64.dll) in ConsoleApplication2.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x0000000000024AA8.
Run Code Online (Sandbox Code Playgroud)
在glfwDestroyWindow(window)下面的代码清单末尾的调用中,我不知道为什么。glTexPageCommitmentARB当不调用或使用commitof调用它时,此调用不会崩溃GL_FALSE/0。
我现在已经阅读了ARB_sparse_texture的规范三遍,检查了每个参数的条件glTexPageCommitmentARB(x,y,z,宽度,高度,内部格式页面大小的深度倍数),我有点确定我已经遵循有关如何正确使用该功能的所有说明。我之前还使用调试上下文和调试消息回调检查了任何 OpenGL 错误,但没有输出。
更多信息:
下面代码中调用之前的 fprintfglTexPageCommitmentARB在程序结束时崩溃之前打印以下输出:
256 128 1 32768
Run Code Online (Sandbox Code Playgroud)
0x00007FFC731F586F (nvoglv64.dll) in ConsoleApplication2.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x0000000000024AA8.
Run Code Online (Sandbox Code Playgroud)
我是否在这里遗漏了任何内容,或者只是驱动程序或 GLFW 错误?
wglDeleteContext(...)编辑:更多信息:崩溃发生在主线程调用GL 上下文之后的驱动程序线程 (nvoglv64.dll) 中。当 Visual Studio 2019 调试器因异常而停止时,我可以看到存在三个驱动程序线程(全部来自 nvoglv64.dll)(其中一个发出访问冲突异常),而主线程在wglDeleteContext(...).
EDIT2:对此进行更多实验,当纹理在销毁 GL 上下文之前未取消引用(引用计数为 0)并由驱动程序处理时,总是会发生崩溃。例如,在上面的代码中,当我 glDeleteTextures(1, &tex);在 before调用时glDestroyWindow(window),不会发生崩溃(可重现)。在实际的应用程序中,我提取了上述 MCVE,纹理也作为颜色附件附加在 FBO 中。当我没有删除FBO 而只是减少纹理的引用计数时(通过调用 )glDeleteTextures(...),崩溃仍然会发生。只有当我也取消引用 FBOglDeleteFramebuffers(...)和纹理时,崩溃才不会再发生。
| 归档时间: |
|
| 查看次数: |
347 次 |
| 最近记录: |