ラスタ化ルール
ラスタ化ルール
頂点に指定された点はスクリーン上のピクセルと正確に一致しないことが多い。この場合、Microsoft® Direct3D® は三角形ラスタ化ルールを適用して、どのピクセルを与えられた三角形に当てはめるかを決める。
- 三角形ラスタ化ルール
- ポイントとラインのルール
- ポイント スプライトのルール
三角形ラスタ化ルール
Direct3D では、ジオメトリを塗りつぶすのに、左上フィリング変換を使う。この規則は、Microsoft Windows® Graphics Device Interface (GDI) および OpenGL の矩形に使う規則と同じである。Direct3D では、ピクセルの中心が重要なポイントである。ピクセルの中心が三角形の内部にある場合、そのピクセルはその三角形の一部である。ピクセルの中心は整数座標にある。
ここで説明する、Direct3D の三角形ラスタ化ルールが、利用可能なすべてのハードウェアに当てはまるとは限らない。現在のハードウェアを調べてみると、このルールの実装において若干の違いが見つかることもある。
次の図は、左上の角が (0, 0) で右下の角が (5, 5) の矩形を示している。この矩形は、予想されるとおり 25 ピクセルを占めている。矩形の幅は、右から左を減算した値で定義される。高さは、下から上を減算した値で定義される。
左上フィリング変換の、上とは水平スパンの垂直位置を表し、左とはあるスパン内のピクセルの水平位置を表す。水平以外の辺は、上の辺ではない。一般に、ほとんどの三角形は左の辺と右の辺だけを持つ。
左上フィリング変換によって、三角形がピクセルの中心を通過するときの Direct3D の処理が決まる。次の図は、頂点が (0, 0)、(5, 0)、(5, 5) の三角形と、頂点が (0, 5)、(0, 0)、(5, 5) の三角形を示している。この場合、前者の三角形は 15 ピクセル (黒で表示) を占めるが、後者の三角形は 10 ピクセル (グレーで表示) しか占めない。共有している辺が前者の三角形の左の辺だからである。
たとえば、左上の角が (0.5, 0.5) で右下の角が (2.5, 4.5) の矩形を 4 つの三角形 (T,B,L,R) で定義する場合、この矩形の中心点は (1.5, 2.5) になる。Direct3D ラスタライザでこの矩形をテセレートすると、各ピクセルの中心は明らかに 4 つの三角形のそれぞれの内部に存在し、左上フィリング変換は不要になる。次の図にこれを示す。矩形内部にあるピクセルには、Direct3D がそのピクセルに入れる三角形に対応したラベルを付けている。
上の例の矩形を左上の角が (1.0, 1.0)、右下の角が (3.0, 5.0)、中心点が (2.0, 3.0) になるように移動すると、Direct3D は左上フィリング変換を適用する。次の図に示すように、この矩形内部のピクセルのほとんどは、2 つ以上の三角形の間の境界をまたがる。
どちらの矩形も、同じピクセルによって表現される。
ポイントとラインのルール
ポイントはポイント スプライトと同様にレンダリングされる。つまり、 スクリーンに整列した四辺形としてレンダリングされ、ポリゴン レンダリングと同じルールが適用される。
アンチエイリアシングしていないラインのレンダリング ルールは、GDI のレンダリング ルールとまったく同様である。
アンチエイリアシングしたラインのレンダリングの詳細については、「ID3DXLine」を参照すること。
ポイント スプライトのルール
ポイント スプライトおよびパッチ プリミティブをラスタ化する場合、まずそのプリミティブを三角形にテセレートし、その三角形をラスタ化したようになる。詳細については、「ポイント スプライト」を参照すること。