我可以在glPushAttrib(GL_ALL_ATTRIB_BITS)
和glPopAttrib()
之间做任何我想做的事情,并且仍然不会损害其他代码 - 在设置之前和之后设置gl状态(这些功能提供完全隔离)吗?
答案 0 :(得分:2)
不,只会将 服务器端 状态推送到堆栈。
还有 客户端 状态,如像素存储和顶点数组。对于他们,您必须使用glPushClientAttrib (...)
。
虽然像素存储状态不经常更改,但顶点数组状态更改在不推荐使用的代码中非常常见。因此,如果要正确执行此操作,则需要保存并还原服务器和客户端状态。