我在看一些移植的OpenGL代码的OpenGL ES,并想知道什么呢这段代码做的正是:的OpenGL ES glPushClientAttrib
glPushClientAttrib(GL_CLIENT_VERTEX_ARRAY_BIT)
为glPushClientAttrib不OpenGL ES的存在。我知道它保存了OpenGL状态机的状态,但我似乎无法找到GL_CLIENT_VERTEX_ARRAY_BIT
标志的确切机制。
我猜测它保存了最后一个顶点数组指针?
进一步的调查显示VBO(顶点缓冲对象)是常用的。这将glVertexPointer
的指针字段更改为偏移量。 glPushClientAttrib(GL_CLIENT_VERTEX_ARRAY_BIT)
如何与此相关(以及相关功能glBindBuffer
,glBufferData
)?
编辑: 只是为了澄清:
gl*Pointer() #1
glPushClientAttrib(*)
gl*Pointer() #2
glPopClientAttrib() <-- this is effectively calling #1 again or resetting to whatever #1 was
酷!只是在我原来的问题中对gl *指针行为做了一些澄清。 – nehz
是的,它将重置glPushClientAttrib之前的原始状态。因此,来自#1的顶点数组属性被设置,来自#2的属性不是(即使它们是不同的函数)。 –