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

关于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问题。诸如错误的原始计数之类的简单事情,可以通过查看每个单独的绘制调用来诊断。


推荐阅读

    linux操作命令重命名?

    linux操作命令重命名?,图片,软件,名称,名字,文件,命令,状态,代码,工具,系统,L

    linux执行两次命令?

    linux执行两次命令?,系统,信息,连续,名称,命令,初级,首页,工具,管理,终端,lin

    linux执行c程序命令?

    linux执行c程序命令?,系统,工作,工具,信息,代码,命令,文件,保险,管理,环境,li

    linux里的操作命令?

    linux里的操作命令?,工作,系统,信息,地址,命令,标准,位置,目录,功能,操作,lin

    linux命令行执行成功?

    linux命令行执行成功?,系统,信息,状态,服务,管理,百度,设计,灵活,代码,命令,L

    安卓执行linux命令行?

    安卓执行linux命令行?,系统,设备,基础,发展,标准,情况,信息,电话,号码,工具,

    c执行在linux命令?

    c执行在linux命令?,系统,环境,保险,工具,代码,命令,程序,文件,终端,语言,如何

    linux分辨率操作命令?

    linux分辨率操作命令?,系统,情况,分辨率,底部,状态,命令,屏幕,屏幕分辨率,

    linux执行中退出命令?

    linux执行中退出命令?,档案,状态,命令,分析,数据,电脑,实时,系统,工具,编辑,l

    linux授权命令执行?

    linux授权命令执行?,系统,工作,数字,权限,文件,概念,标准,命令,目录,用户,在L

    linux定时执行命令?

    linux定时执行命令?,时间,系统,服务,任务,工作,标准,情况,周期性,工具,命令,l

    linux命令行操作软件?

    linux命令行操作软件?,软件,工具,系统,名称,管理,工作,命令,设计,平台,标准,

    如何在linux执行命令?

    如何在linux执行命令?,单位,电脑,命令,系统,基础,发行,工具,工作,信息,文件,m

    linux看命令执行过程?

    linux看命令执行过程?,系统,服务,状态,软件,时间,数据,地址,命令,进程,情况,l

    linux登陆执行命令?

    linux登陆执行命令?,系统,服务,工具,地址,密码,百度,管理,检测,网络,第一,怎

    linux权限命令可执行?

    linux权限命令可执行?,系统,工具,信息,权限,数字,网络,发行,底部,代码,文件,l

    linux查看扩展名命令?

    linux查看扩展名命令?,工作,系统,地址,信息,软件,文件,标准,电脑,命令,目录,L

    linux常见操作命令?

    linux常见操作命令?,系统,工作,信息,管理,地址,命令,目录,单位,数据,标准,lin

    linux远程执行多命令?

    linux远程执行多命令?,工具,服务,命令,状态,暂停,代码,底部,时间,地址,系统,L

    linux下执行命令行?

    linux下执行命令行?,工作,系统,信息,单位,命令,基础,地址,设备,权威,标准,mv