7

あなたがこれらの人の一人を持っていると想像してください:

代替テキスト
(出典: codesampler.com )

通称GL_TRIANGLE_STRIP。さまざまな色を使用して色を付けたい場合は、次を使用できます。

glColorPointer(4, GL_UNSIGNED_BYTE, 0, colorArray);
glEnableClientState(GL_COLOR_ARRAY);

カラー配列の各「アイテム」がストリップの頂点に一致する場所。しかし、色が 2 つの異なる色の間で交互に繰り返される場合はどうなるでしょうか。「実際の」異なる色が 2 つしかない場合、頂点ごとに色を定義する必要はありません。したがって、私の質問は、2 つの色だけを含む colorArray を定義し、頂点配列をループするときに opengl をこれら 2 つの間で交互に実行できるかどうかです。

そして、ええ、私はopenglの完全な初心者なので、これはばかげた質問かもしれません...

4

2 に答える 2

4

これは、 OpenGL Color Index Modeを使用して行うことができます。ただし、私の経験では、これは実際には、各頂点の色を指定するよりも最近のほとんどのグラフィックス カードで遅くなることに注意してください。

カラー インデックス モードでは、個別のカラー配列を送信すると、完全な RGB/RGBA ではなく、各頂点が配列へのインデックスを指定します。メモリ効率は向上しますが、ほとんどのハードウェア ドライバーでは最適化されていません。

于 2009-08-21T18:32:20.880 に答える
3

頂点シェーダーを使用して、どの色にするかを説明する各頂点のブール値フラグを送信することで、これを行うことができます。実際、最も簡単で最速の方法は、おそらく各頂点の色を送信することです。

opengl が複数の頂点ストリームとインデックスを持つ機能を持っていれば、機能する可能性があります (ただし、おそらくそれだけの価値はありません)。

于 2009-08-21T18:43:01.750 に答える