Platform SDK: DirectX

ビューポートのスケーリング

[C++]

ビューポート用の D3DVIEWPORT7 構造体の dwXdwYdwWidth、および dwHeight メンバに寸法を指定して、レンダリング ターゲット サーフェスのビューポートの位置座標および大きさを定義する。これらの値は、レンダリング ターゲット サーフェスの左上角からのスクリーン座標である。

Direct3D では、ビューポートの位置座標と寸法を使用して頂点をスケーリングし、レンダリングするシーンをターゲット サーフェス上の適切な位置座標に配置する。内部的には、Direct3D は、各頂点に適用される行列にこれらの値を挿入している。

この行列は、ビューポートの寸法および指定の深度範囲に従って頂点をスケーリングし、その頂点をレンダリング ターゲット サーフェスの適切な位置座標にトランスフォームする (また、この行列は、y が下方に増加する左上角のスクリーン原点を反映するために y 座標を "反転" する)。この行列を適用した後も、頂点は同次である。つまり、頂点は依然として [x,y,z,w] 頂点として存在するので、ラスタライザに送る前に頂点を非同次にトランスフォームしなければならない。これは、「ラスタライザ」で説明するように、単純な除算によって行う。

 :  DirectX 7.0 のビューポート スケーリング行列は、頂点をスケーリングする D3DVIEWPORT7 構造体の dvMinZ および dvMaxZ メンバを組み込んで深度範囲 [dvMinZ, dvMaxZ] を合わせる。これは、これらのメンバがクリッピングに使用されていた旧リリースの DirectX のセマンティクスとは異なる。詳細については、「ビューポート矩形」および「クリッピング ボリューム」を参照すること。アプリケーションでは、通常、dvMinZ および dvMaxZ をそれぞれ 0.0 および 1.0 に設定して深度範囲全体へのレンダリングを実行する。ただし、別の値を設定して何らかのエフェクトを得ることもできる。両方の値を 0.0 に設定してすべてのオブジェクトを強制的にフォアグラウンドにレンダリングしたり、両方の値を 1.0 に設定してすべてのオブジェクトをバックグラウンドにレンダリングすることができる。

[Visual Basic]

ビューポート用の D3DVIEWPORT7 型の IXIYIWidth、および IHeight メンバに寸法を指定して、レンダリング ターゲット サーフェスのビューポートの位置座標および大きさを定義する。これらの値は、レンダリング ターゲット サーフェスの左上角からのスクリーン座標である。

Direct3D では、ビューポートの位置座標と寸法を使用して頂点をスケーリングし、レンダリングするシーンをターゲット サーフェス上の適切な位置座標に配置する。内部的には、Direct3D は、各頂点に適用される行列にこれらの値を挿入している。

この行列は、ビューポートの寸法および指定の深度範囲に従って頂点をスケーリングし、その頂点をレンダリング ターゲット サーフェスの適切な位置座標にトランスフォームする (また、この行列は、y が下方に増加する左上角のスクリーン原点を反映するために y 座標を "反転" する)。この行列を適用した後も、頂点は同次である。つまり、頂点は依然として [x,y,z,w] 頂点として存在するので、ラスタライザに送る前に頂点を非同次にトランスフォームしなければならない。これは、「ラスタライザ」で説明するように、単純な除算によって行う。