Platform SDK: DirectX

三角形ラスタ化ルール

頂点に指定された点はスクリーン上のピクセルと正確に一致しないことが多い。この場合、Direct3D は三角形ラスタ化ルールを適用して、どのピクセルが与えられた三角形に当てはまるかを決める。

Direct3D では、ジオメトリを塗りつぶすのに、左上フィリング変換を使用する。この変換は、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) の矩形を定義する場合、この矩形の中心点は (1.5, 2.5) になる。Direct3D ラスタライザでこの矩形をラスタ化すると、各ピクセルの中心は明らかに 4 つの三角形のそれぞれの内部に存在し、左上フィリング変換は不要になる。次の図にこれを示す。矩形内部にあるピクセルには、Direct3D がそのピクセルを入れる三角形に対応したラベルが付けられている。

上の例の矩形を左上の角が (1.0, 1.0)、右下の角が (3.0, 5.0)、中心点が (2.0, 3.0) になるように移動すると、Direct3D は左上フィリング変換を適用する。次の図に示すように、この矩形内部のピクセルのほとんどは、2 つ以上の三角形の間の境界をまたがる。

どちらの矩形でも、同じピクセルが影響を受ける。