我正在考虑将一些 OpenGL 代码移植到 OpenGL ES,并且想知道这段代码到底做了什么:
glPushClientAttrib(GL_CLIENT_VERTEX_ARRAY_BIT)
因为 OpenGL ES 中不存在 glPushClientAttrib。我知道它保存了 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