如何保存 - 恢复所有 opengl 状态变量
Posted
技术标签:
【中文标题】如何保存 - 恢复所有 opengl 状态变量【英文标题】:How to save - restore all opengl state vars 【发布时间】:2014-05-18 23:09:53 【问题描述】:我可以在glPushAttrib(GL_ALL_ATTRIB_BITS)
和glPopAttrib()
之间做任何我想做的事情,并且仍然不会损害其他代码使用 - 在之前和之后设置 gl 状态(这些函数是否提供完全隔离)?
【问题讨论】:
我觉得有义务指出,如果你做了一些导致你的应用程序崩溃的事情(例如,将一个顶点指针设置为NULL
没有 VBO 绑定然后尝试绘制),没有多少推并弹出正确的状态将帮助您。所以是的,即使你把它包裹起来,它仍然很有可能损害应用程序的其余部分;)
【参考方案1】:
不,这只会将 服务器端 状态推送到堆栈上。
还有客户端状态,例如像素存储和顶点数组。对于他们,您必须使用glPushClientAttrib (...)
。
虽然像素存储状态很少更改,但顶点数组状态更改在已弃用的代码中非常常见。因此,如果您想正确执行此操作,则需要保存和恢复服务器和客户端状态。
【讨论】:
以上是关于如何保存 - 恢复所有 opengl 状态变量的主要内容,如果未能解决你的问题,请参考以下文章