GPU 驱动程序错误处理
GPU driver errors handling
我正在编写基于 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错误的可靠方法;)
您可以在任何操作后调用此函数以查看是否存在错误
GLenum glGetError(void);
- 使用返回对象的函数处理错误
- C++:处理错误,看不懂我的错误
- 如何处理错误"E1696命令行错误:无法在Visual Studio 2017中打开元数据文件"mscorlib.dll"?
- C++ 异常处理错误输出
- 信号处理错误
- 文件处理I/O C 错误
- 文件处理 - 错误:与 while 循环 (C++) 中的"运算符>>"不匹配(代码::块)
- SDL的事件处理错误
- HMODULE在重建导入地址表IAT时处理错误
- C++ 中的文件处理错误 - 调用"std::basic_fstream<char, std::char_traits<char> >::open(const char[8],
- 在处理线程时,处理错误的正确方法是什么
- 处理C++错误
- 异常处理C++错误
- CUDA图像处理错误
- 文件处理错误
- 代码::阻止资源预处理错误
- 使用模板创建类的新实例,不知道如何处理错误
- Qt 与 opencv 异常处理错误
- 提升 MSM 中的错误处理错误
- 如何处理错误“vtkTrivialProducer :此数据对象不包含请求的范围”