【问题标题】:How to save - restore all opengl state vars如何保存 - 恢复所有 opengl 状态变量
【发布时间】:2014-05-18 23:09:53
【问题描述】:

我可以在glPushAttrib(GL_ALL_ATTRIB_BITS) 和glPopAttrib() 之间做任何我想做的事情,并且仍然不会损害其他代码使用 - 在之前和之后设置 gl 状态(这些函数是否提供完全隔离)?

【问题讨论】:

  • 我觉得有义务指出,如果你做了一些导致你的应用程序崩溃的事情(例如,将一个顶点指针设置为 NULL 没有 VBO 绑定然后尝试绘制),没有多少推并弹出正确的状态将帮助您。所以是的,即使你把它包裹起来,它仍然很有可能损害应用程序的其余部分;)

标签: c++ c opengl graphics state


【解决方案1】:

不,这只会将 服务器端 状态推送到堆栈上。

还有客户端状态,例如像素存储和顶点数组。对于他们,您必须使用glPushClientAttrib (...)。

虽然像素存储状态很少更改,但顶点数组状态更改在已弃用的代码中非常常见。因此,如果您想正确执行此操作,则需要保存和恢复服务器和客户端状态。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-04
    • 2011-07-23
    • 2014-04-25
    相关资源
    最近更新 更多