2

チェス盤を描くときに異なるマスの色を指定する最良の方法は何ですか? 次のような色の 2 x 2 ボードが必要だとします。

*-----*-----*
|black|white|
*-----*-----*
|white|black|
*-----*-----*

これで頂点が 9 つになり、GL_QUADS プリミティブを使用してボードを描画できるようになりました。私が理解しているように、正方形をある色で塗りつぶすことは、各頂点の色をその色で指定することを意味します。しかし、すべての正方形を異なる色で塗りつぶすということは、5 つの頂点を複製することを意味します。

 *-----**----*
 |black|white|
**-----**----**
 |white|black|
 *-----**----*

これを行う最も簡単な方法はありますか?そして、実際に OpenGL で同じ座標と異なる色の頂点を持つことは許可されていますか?

4

1 に答える 1

4

各フィールドに四角形を本当に描きたい場合は、頂点を複製するのが最善の方法です。同じ座標を持つ異なる頂点に問題はありません。GL のラスター化ルールは、a) そのような共有エッジにギャップがないこと、および b) オーバードローがないことを確認するので、問題ありません。

ただし、フィールド全体を 1 つのクワッドとして描画し、テクスチャリングを使用することもできます。必要なのは、黒と白の色の 2x2 サイズのテクスチャだけで、GL_NEARESTフィルタリング モードを使用して、きれいでシャープなチェッカーボード パターンを得ることができます。GL_REPEATこのアプローチでは、モードを使用して texcoords を変更するだけで、テクスチャをまったく変更せずにフィールドの数を動的に変更することもできます。

最新のシェーダー ベースの GL では、フラグメント シェーダーで直接チェッカーボード パターンを手続き的に生成することもできます。

于 2013-08-13T20:21:55.417 に答える