glUnmapBuffer - 返回值和错误代码

时间:2013-10-23 14:34:55

标签: opengl

目前关注glUnmapBuffer,根据一些文档,它返回GLboolean以指示成功(GL_TRUE)或失败(GL_FALSE)。据推测,如果失败则设置GL错误。

我的问题是在什么情况下你需要检查它是否在发布版本中返回GL_TRUE,假设你在调试版本中的每个OpenGL调用之后检查glGetError?

或者更确切地说,当其他OpenGL函数没有时,为什么这个函数需要返回bool成功/失败?我在这里寻找组织原则,即它有时可以在没有设置gl错误的情况下返回GL_FALSE吗?

编辑:

好的,我找到了答案。不知道是否要放弃它,因为它很有趣。 On this page

  

“由于它的低级性质,这些保护必须是   轻松。因此,有可能在缓冲期间   映射,发生某种腐败。如果发生这种情况,请致电   glUnmapBuffer将返回GL_FALSE。那时,内容   有问题的缓冲区被认为是未定义的。它可能有你的   数据,或者它可能有随机垃圾。“

因此,当我指定Windows 7或更高版本时,我不需要考虑它(我认为)。具有讽刺意味的是,我将Direct 3D转换为OpenGL的原因之一正是这一点(使用Direct 3D 9.0)。

1 个答案:

答案 0 :(得分:3)

因为it's not a regular OpenGL error

  

(...)由于系统特定原因会影响图形内存的可用性,例如屏幕模式更改,这可能会发生。在这种情况下,返回GL_FALSE并且未定义数据存储内容。应用程序必须检测此罕见情况并重新初始化数据存储。

毫无疑问,我们引入了这种特殊机制,将此类案例与glGetError捕获的典型用户交互错误分开。