首页 / 知识

关于opengl:调试VBO Vertex缓冲区崩溃

2023-04-15 13:02:00

关于opengl:调试VBO Vertex缓冲区崩溃

Debugging VBO Vertex buffers crashes

我正在使用VBO扩展来存储顶点,普通和颜色缓冲区(glBindBufferARB)
由于某些原因,在更改缓冲区或执行某些操作时,应用程序因访问冲突而崩溃。附加调试器时,我看到崩溃发生在不是我的主线程的某个线程中,该线程执行与nvidia图形驱动程序相关的某些dll中的执行,执行opengl调用。

可能发生的是我给某些缓冲区调用了错误的缓冲区或大小错误的缓冲区。所以我的问题是,我该如何调试这种情况?崩溃似乎发生在实际调用之后的某个时间,并且在另一个线程中。


假设这是关于Windows的,NVIDIA具有GLExpert工具。它可以打印各种OpenGL警告/错误。

在某些其他情况下,使用启用了错误检查的GLIntercept OpenGL调用拦截器可能会很有用。

如果这些工具没有帮助,那么这是很好的旧调试方法。尝试缩小问题范围,找到导致崩溃的确切原因。如果是NVIDIA特定的问题,请尝试安装其他驱动程序和/或在NVIDIA开发者论坛上提问。


我认为您可能只需要暴力破解那个。
IE。一次用几行注释掉任何vbo,直到程序不再崩溃。然后,您将了解要注意的行并真正检查要传递的参数。

也可以尝试在程序周围大量散布glError()调用。通常,如果您传递假参数glError会在崩溃之前告诉您一些错误。


nVidia的NvPerfHUD是最好的OpenGl / D3D调试工具之一。它不会帮助您找到确切的问题,但是它确实提供了另一种视图,您可以看到正在发送到渲染管道中的内容。

但是,我会说我只在D3D应用程序中使用过它,所以我不知道它对OpenGL程序是否有太大帮助。

编辑:

我不确定为什么这被否决了。我之前用NvPerfHUD调试了VB和IB问题。诸如错误的原始计数之类的简单事情,可以通过查看每个单独的绘制调用来诊断。


崩溃调试执行扩展

最新内容

相关内容

猜你喜欢