0
私は頂点ごとに6バイトに走るいくつかのパックされた頂点データを持っている:GLES2.0 glVertexAttribPointer:奇数ストライド値とオフセット値を使用するとパフォーマンスが低下しますか?
glVertexAttribPointer Shader.pos3d_loc, 3, GL_UNSIGNED_BYTE, True, 6, 0
glVertexAttribPointer Shader.norm_loc, 3, GL_UNSIGNED_BYTE, True, 6, 3
は4バイトの倍数ではありません進歩とオフセットを使用することによって誘発される任意のパフォーマンスの低下(例えば隠されたメモリコピーが)ありますか?
この時点でコピーは行われません。データを頂点バッファにコピーするか、必要に応じて値が1つずつアクセスされます。これらの値は、OpenGLにバッファの解釈方法を伝えるためのものです。例えば、normal [i] .x =(float)((ubyte)((void *)ptr)[stride * i]))ここで、ubyteはGL_UNSIGNED_BYTEパラメータから来たものです。 –
ありがとう:)私は関数が何をしているのか理解していますが、かなりのパフォーマンスコストでGLが内部的にデータを変換するいくつかのアラインメントとフォーマット関連の問題があります。奇妙なストライドとアラインメントを指定するとGLが最終的なレンダリングコールが発生したときにデータを内部的に再バッファリングするかどうかを疑問に思った。 – Peeling