0

インターリーブされた配列形式があり、オープンGLでレンダリングしたいと思います。三角形の配列です。頂点は2Dフローティングポイントで、色はRGBAフローティングポイントです。つまり、単一の三角形が次のように配置されます。

{vertex.x, vertex.y, color.red, color.blue, color.green, color.alpha, ...}

すべての数値が単精度浮動小数点数である場合。formatパラメータがどうあるべきか理解するのに苦労しています。V2FとC4Fが必要なようですが、そのようなシンボリック定数は存在しません。私はそれらを一緒にORすることができます(GL_V2F | GL_C4F)か?

更新:私はpythonとpyopenglを使用しています。tiburの答えは非常に明確で、Cでプログラミングしていれば完了です。Pythonコードは非常に似ていますが、ポインターをカラー配列に8バイトオフセットする必要があります。Pythonでこれを行う方法、またはそれが可能かどうかさえわかりません。

strideInBytes = 24
interleavedBytes = array.tostring()
glVertexPointer(2, GL_FLOAT, 24, interleavedBytes) 
glColorPointer(4, GL_FLOAT, 24, interleavedBytes) #The first color actually starts on the 9th byte

インターリーブされた配列全体をコピーすることは避ける必要があります。それ以外の場合は、コピーを作成して最初の8バイトを切り落とすことができます。

4

1 に答える 1

2

いいえ、ORすることはできません。次のコードを使用する必要があります。

glVertexPointer(2, GL_FLOAT, 6*sizeof(float), ptr);
glColorPointer(4, GL_FLOAT, 6*sizeof(float), ((unsigned char*)ptr) + 2 * sizeof(float));
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);
于 2011-07-24T20:45:15.497 に答える