如何保存 - 恢复所有 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 状态变量的主要内容,如果未能解决你的问题,请参考以下文章

[程序员指南5]保存和恢复

计算机图形学_图元的属性_1_OpenGL状态变量

计算机图形学_图元的属性_1_OpenGL状态变量

保存/恢复片段状态android

保存/恢复片段状态android

如何使用 onSaveInstanceState 在我的片段上保存和恢复接口