当我搜索glGetError
时,我发现以下内容(来自OpenGL)
要允许分布式实现,可能会有几个错误标志。 如果任何单个错误标志记录了错误,则返回该标志的值,并在调用glGetError时将该标志重置为GL_NO_ERROR。
如果多个标志记录了错误,glGetError将返回并清除任意错误标志值。因此,如果要重置所有错误标志,则应始终在循环中调用glGetError,直到它返回GL_NO_ERROR。
Q1:分布式实施和错误标志的定义是什么?总共有多少错误标志?
Q2:任意在这里意味着什么?
问题3:“应始终在循环中调用glGetError”意味着在分布式实现的情况下这是强制性的,但如果不是,那么我们不需要将glGetError放在循环中,对?
其他资源,例如wrap a macro around glGetError
,glGetError
example in the superbible,都使用循环。
答案 0 :(得分:4)
Q1:分布式实现的定义和错误标志是什么?
分布式实现是指OpenGL实现驻留在一台计算机上,程序使OpenGL调用另一台计算机。这甚至不是一个模糊的,异国情调,但与X11相当普遍。假设您可以使用SSH连接到example.com
,并且有一个OpenGL程序,比如说glxgears
。然后,您可以在glxgears
上执行example.com
,但可以通过GLX传输将OpenGL命令传输到本地X11服务器。
ssh -X example.com glxgears
...总共有多少错误标志?
OpenGL规范中定义并列在glGetError
引用中的所有错误标记。
Q2:这里任意意味着什么?
字典定义的含义。如果设置了多个错误标志,则OpenGL规范不会强制执行报告这些错误标志的特定顺序。
问题3:“应始终在循环中调用glGetError”意味着在分布式实现的情况下这是强制性的,但如果没有,那么我们不需要将glGetError放在循环中,对吗?
始终在循环中调用glGetError
,因为您可能在不知情的情况下最终处于分布式状态。有GLX和间接渲染,但是OpenGL可以以任何其他方式分发,比如VirtualGL,或其他你不知道情况的东西。