GPU驱动程序错误处理

时间:2015-03-11 07:56:16

标签: c++ opengl

我正在编写基于OpenGL的渲染应用程序,我想知道是否有办法拦截GPU驱动程序发送的错误?

现在我得到MB有错误信息,然后应用程序关闭。我并不是说这很糟糕;)但我想根据应用程序中的内容进行一些关闭操作。

我正在使用Nvidia和ATI GPU卡,我会遇到各种错误,具体取决于GPU卡的性能和型号。

此外,我还有内存管理问题。我正在使用VBO-s进行渲染,当GPU单元上没有足够的内存时,GPU驱动程序将VBO数据保存在RAM上。这是可以预料的,但似乎没有RAM过载机制,当GPU驱动程序试图为缓冲区分配更多内存时,我的计算机会挂起。

更新

内存管理:我认为挂起的东西实际上是性能急剧降低,当我分配了所有可用的RAM后,我的Windows操作系统在HDD上使用虚拟内存即可。在我的操作系统中将可用的虚拟内存设置为0 GL_OUT_OF_MEMORY后,glGetError(void);调用后重新调整。

错误处理:对不起,我可能不够具体。我写的渲染代码的性能似乎是高度依赖硬件,这是可以预期的。我的问题是我没有收到OpenGL本身的任何错误,而是来自显卡驱动程序 durnig渲染过程。我希望拦截这些驱动程序错误来相应地处理它们。例如: http://nvidia.custhelp.com/app/answers/detail/a_id/3008/kw/your%20hardware%20configuration

@Simon我知道glGetError(void)函数,我的代码完全没有,但是当驱动程序发送MB时没有设置错误标志。

@Colonel Thirty Two& @Andon M. Coleman感谢您的建议我也不喜欢glGetError垃圾邮件,我不知道有这样一种处理OpenGL错误的方法;)

1 个答案:

答案 0 :(得分:1)

您可以在执行任何操作后调用此函数以查看是否存在错误

GLenum glGetError(void);