私はいくつかの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