**已关闭。**此问题不符合Stack Overflow guidelines。当前不接受答案。
我们不允许问题寻求书籍、工具、软件库等的建议。您可以编辑问题,以便使用事实和引文来回答。
23小时前关门了。
Improve this question
OpenGL是不错的,但是它的大部分操作都是在GPU上进行的,像gdb这样的调试器无法访问它,所以如果我的OpenGL调用发生了意外,就很难追踪到bug。
我可以看到两种可能的解决方法:
1.也许有一个调试器可以访问GPU。
1.也许有人已经编写了代码来模拟CPU上的GPU活动,这将更容易调试。
有没有人有知识可以帮助这里?
1条答案
按热度按时间dbf7pr2w1#
当你不正确地使用OpenGL时,它会产生一个或多个用户错误标志。我们可以使用一个名为glGetError的函数来查询这些错误标志,该函数检查错误标志的设置,如果OpenGL使用不当,则返回一个错误值。
例如,可以使用其它类型的设备。
请记住,如果调用了glGetError,它会清除所有错误标志。这意味着如果在每一帧结束时调用glGetError一次,并且它返回一个错误,您不能断定这是唯一的错误。
使用glGetError(),您可以快速捕捉OpenGL错误开始出现的第一个位置。
对于OpenGL 4.3版及更高版本,我们可以使用称为调试输出的OpenGL扩展。OpenGL将向用户发送错误或警告消息,与glCheckError相比,消息中包含更多详细信息。每当发生错误时。
为此,我们必须首先请求调试上下文,这是在GLFW上完成的方式。
我们向OpenGL传递一个错误日志函数回调(类似于GLFW的输入回调),在回调函数中,我们可以自由地处理我们认为合适的OpenGL错误数据。