1

これは主に理論的な質問です。

画面に三角形を描きたいとしましょう。頂点シェーダーに3Dの3ポイントを指定すると、2D、ウィンドウ座標、または画面座標の3ポイントに変換されます。基本的に、モニターまたはディスプレイ上の3ピクセル座標。

ここから、グラフィックスパイプラインはこれらの3つのポイントに基づいて、この三角形をどのように埋めていきますか?私の推測は次のようなものです:

  1. 次のように、xとyの上限と下限を決定して、三角形をボックスで囲みます。 ここに画像の説明を入力してください

  2. ブレゼンハムの線アルゴリズムを使用して、三角形の3つのエッジを3つの異なる色で描画します。このステップでは、通常のカラーバッファーを使用することはできません。

  3. ボックス内のピクセルのすべての行に対してこれを行います。左端のピクセル(手順2の結果を保存した場所)から開始し、端に達するまで右に進みます。次に、右に進み、ピクセルに色を付け(フラグメントシェーダーを実行)、別の行に到達するまで(手順2の結果が保存されている場所で別の色のピクセルにヒットするまで)、通常のカラーバッファーに書き込みます。次に、停止して次の行に進みます。

  4. 通常のカラーバッファのフラグメントシェーダを使用してエッジを描画します。

これは複雑で非効率的な解決策のようです。それは実際にどのように行われていますか?

4

1 に答える 1

1

スキャンラインアルゴリズムを見てください。基本的には、水平線を上から下に移動し、このスキャンラインと三角形の2つの交点を計算してから、これら2つのポイントの間に線を描画します。

于 2012-06-06T07:49:57.300 に答える