目前查看 glUnmapBuffer ,根据一些文档,它返回 GLboolean 以指示成功(GL_TRUE)或失败(GL_FALSE)。据推测,如果它失败,它会设置 GL 错误。
我的问题是在什么情况下您需要检查它是否在发布版本中返回 GL_TRUE,假设您在调试版本中的每个 OpenGL 调用后检查 glGetError ?
或者更确切地说,当其他 OpenGL 函数不需要时,为什么这个函数需要返回布尔成功/失败?我在这里寻找组织原则,即它有时可以在没有设置 gl 错误的情况下返回 GL_FALSE 吗?
编辑:
好的,我找到了答案。不确定是否要保留它,因为它很有趣。 在此页面上:
“由于其低级性质,必须放松这些保护。因此,在映射缓冲区期间,可能会发生某种损坏。如果发生这种情况,调用 glUnmapBuffer 将返回 GL_FALSE。那时点,有问题的缓冲区的内容被认为是未定义的。它可能有你的数据,或者它可能有随机垃圾。
因此,当我指定 Windows 7 或更高版本时,我不需要考虑它(我认为)。具有讽刺意味的是,我从 Direct 3D 切换到 OpenGL 的原因之一正是这个(使用 Direct 3D 9.0)。