私はいくつかのOpenGLコードをOpenGLESに移植することを検討していて、このコードが正確に何をするのか疑問に思っていました。
glPushClientAttrib(GL_CLIENT_VERTEX_ARRAY_BIT)
glPushClientAttribはOpenGLESに存在しないため。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