は正確に行います。の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
)?
EDIT: だけ明確にする:
gl*Pointer() #1
glPushClientAttrib(*)
gl*Pointer() #2
glPopClientAttrib() <-- this is effectively calling #1 again or resetting to whatever #1 was
クール!私の元の質問のgl * Pointerの振る舞いについてのちょっとした説明。 – nehz
はい、元の状態をglPushClientAttribの前からリセットしています。したがって、#1の頂点配列属性は設定され、#2の属性は(たとえそれらが異なる関数であっても)設定されません。 –