我正在编写基于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错误的方法;)
答案 0 :(得分:1)
您可以在执行任何操作后调用此函数以查看是否存在错误
GLenum glGetError(void);