目前,根据某些文档查看glUnmapBuffer,它返回GLboolean来指示成功(GL_TRUE)或失败(GL_FALSE)。据推测,如果失败,则会设置GL错误。
我的问题是,假设您在调试版本中的每个OpenGL调用之后都在检查glGetError,则在什么情况下需要检查它是否在发行版本中以GL_TRUE返回?
或者更确切地说,为什么在其他OpenGL函数不需要的情况下此函数需要返回bool成功/失败?我在这里寻找组织原则,即它有时可以在未设置gl错误的情况下返回GL_FALSE吗?
编辑:
好的,我找到了答案。不确定是否要保留它,因为它很有趣。在此页面上:
``由于其低级性质,必须放松这些保护。因此,在映射缓冲区的过程中可能会发生某种损坏。如果发生这种情况,则调用glUnmapBuffer将返回GL_FALSE。因此,该缓冲区的内容被认为是未定义的。它可能包含您的数据,也可能具有随机垃圾。”
因此,当我指定Windows 7或更高版本时,我不需要考虑它。具有讽刺意味的是,我之所以从Direct 3D切换到OpenGL的原因之一就是Direct 3D 9.0。
(...)可能由于系统特定的原因而发生,这些原因会影响图形内存的可用性,例如屏幕模式更改。在这种情况下,将返回GL_FALSE,并且数据存储内容未定义。应用程序必须检测到这种罕见情况并重新初始化数据存储。
无疑引入了这种特殊机制,以将此类情况与捕获的典型用户交互错误区分开glGetError
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句