次の方法で共有


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 を含む)

こちらもご覧ください

D3D10DDI_DEVICEFUNCS

D3D10_DDI_VIEWPORT

pfnSetErrorCb