PFND3D10DDI_SETVIEWPORTS コールバック関数 (d3d10umddi.h)
SetViewports 関数はビューポートを設定します。
構文
PFND3D10DDI_SETVIEWPORTS Pfnd3d10ddiSetviewports;
void Pfnd3d10ddiSetviewports(
D3D10DDI_HDEVICE unnamedParam1,
[in] UINT NumViewports,
[in] UINT ClearViewports,
const D3D10_DDI_VIEWPORT *unnamedParam4
)
{...}
パラメーター
unnamedParam1
hDevice [in]
ディスプレイ デバイスへのハンドル (グラフィックス コンテキスト)。
[in] NumViewports
pViewports パラメーターが指定するビューポートの合計数。
[in] ClearViewports
NumViewports が NULL に設定するように指定したビューポートの数の後のビューポートの数。 この数値は、以前のビューポート数 (つまり、Microsoft Direct3D ランタイムが以前 に SetViewports と呼んだ場合) と新しいビューポート数の差を表します。
ClearViewports が指定する数値は、ユーザー モードのディスプレイ ドライバーがこの数を計算できるため、最適化の助けにすぎません。
unnamedParam4
pViewports [in]
ビューポートが設定 するD3D10_DDI_VIEWPORT 構造体の配列。
戻り値
なし
解説
ドライバーは、 pfnSetErrorCb コールバック関数を使用してエラー コードを設定できます。
ビューポートは、出力レンダー ターゲットと深度ステンシル リソースへの変換ポスト クリップを指定します。 SetViewports の呼び出しで定義されていないビューポートはすべて NULL に設定されます。 NULL ビューポートは次のように定義されます。
struct D3D10_DDI_VIEWPORT {
FLOAT TopLeftX = NaN;
FLOAT TopLeftY = NaN;
FLOAT Width = NaN;
FLOAT Height = NaN;
FLOAT MinDepth = NaN;
FLOAT MaxDepth = NaN;
} D3D10_DDI_VIEWPORT;</pre>
この定義は、ビューポートがオフになっていることを意味します。
ユーザー モード ディスプレイ ドライバーは、すべてのビューポートを 1 つの操作としてアトミックに設定する必要があります。
NumViewports パラメーターは、pViewports パラメーターが指定する配列内のビューポートの数を指定しますが、配列内の一部の値は NULL にすることができます。
NumViewports が指定する数と、すべての NULL 値または非連結値を含めるために許可されるビューポートの最大数との間のビューポートの範囲。 ClearViewports パラメーターが指定する数値は、現在のアトミック操作でドライバーがクリアする必要があるビューポートの数をドライバーに通知します。
以前の SetViewports の呼び出しで NumViewports パラメーターに値 2 が渡され、SetViewports への現在の呼び出しで NumViewports で値 4 が渡された場合、SetViewports への現在の呼び出しでは ClearViewports パラメーターの値 0 も渡されます。 SetViewports への次の連続する呼び出しで NumViewports で値 1 が渡された場合、連続する呼び出しでは ClearViewports で値 3 (4 - 1) も渡されます。
ユーザー モードのクエリ操作中にクリア ビューポートの値が要求された場合、値はビューポートの最大数とビューポート値の差です。
SetViewports を使用すると、ビューポートが有効になります。 つまり、 SetViewports により、ビューポートの寸法が範囲内 (D3D10_VIEWPORT_BOUNDS_MIN、D3D10_VIEWPORT_BOUNDS_MAX、D3D10_MIN_DEPTH、D3D10_MAX_DEPTH) 内に収まるようにします。 また、SetViewports を使用すると、NaN 座標が存在せず、非正規化された float 値が 0 にフラッシュされます。
ドライバーは、D3DDDIERR_DEVICEREMOVEDを除き、エラーが発生しないようにする必要があります。 したがって、ドライバーが pfnSetErrorCb 関数の呼び出しで、D3DDDIERR_DEVICEREMOVEDを除くエラーを渡した場合、Microsoft Direct3D ランタイムはエラーが重大であると判断します。 デバイスが削除された場合でも、ドライバーはD3DDDIERR_DEVICEREMOVEDを返す必要はありません。ただし、デバイスの削除が SetViewports の操作に干渉した場合 (通常は発生しないようにする必要があります)、ドライバーはD3DDDIERR_DEVICEREMOVEDを返すことができます。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista 以降のバージョンの Windows オペレーティング システムで使用できます。 |
対象プラットフォーム | デスクトップ |
Header | d3d10umddi.h (D3d10umddi.h を含む) |