PFND3D11_1DDI_CLEARVIEW コールバック関数 (d3d10umddi.h)
PFND3D11_1DDI_CLEARVIEW 、リソース ビュー内のすべての要素を 1 つの値に設定します。 リソース ビューは、形式と、場合によってはリソースのサブセットを示すサーフェス記述子です。
構文
PFND3D11_1DDI_CLEARVIEW Pfnd3d111DdiClearview;
void Pfnd3d111DdiClearview(
D3D10DDI_HDEVICE hDevice,
D3D11DDI_HANDLETYPE viewType,
VOID *hView,
const FLOAT Color[4],
const D3D10_DDI_RECT *pRect,
UINT NumRects
)
{...}
パラメーター
hDevice
ディスプレイ デバイスへのハンドル (グラフィックス コンテキスト)。
viewType
このクリア操作 を サポートするビュー ハンドルの種類を識別する D3D11DDI_HANDLETYPE 型の値。 使用できる型は次のとおりです。
- D3D10DDI_HT_RENDERTARGETVIEW
- D3D11DDI_HT_UNORDEREDACCESSVIEW
- 任意のD3D11_1DDI_HT_VIDEOXXX 型
hView
クリアするリソース ビューへのポインター。
Color[4]
pRect
クリアするリソース ビュー内の四角形の RECT 構造体の配列。 NULL の場合、 ClearView はサーフェス全体をクリアします。
NumRects
pRect パラメーターが指定する配列内の四角形の数。
戻り値
なし
解説
ClearView は、レンダー ターゲット ビュー (RTV)、順序なしのアクセス ビュー (UAV)、または Texture2D サーフェスのビデオ ビューでのみ機能します。 pRect 配列内の空の四角形は操作なしです。 上の値が下の値と等しい場合、または左の値が右の値と等しい場合、四角形は空になります。
ClearView では、3-D テクスチャはサポートされていません。
ClearView は、ビュー内のすべての配列スライスに同じ色の値を適用します。 pRect 配列内のすべての四角形は、各配列スライスに対応します。 四角形の pRect 配列は、1 つのサーフェスでクリアする領域のセットです。 ビューが配列の場合、 ClearView は各配列スライスのすべての四角形を個別にクリアします。
ユーザー モード ドライバーは、バッファーに四角形を適用するときに、上の値を 0 に設定し、下部の値を 1 に設定し、バッファー内のエクステントを記述する左の値と右の値を設定する必要があります。 上の値が下の値と等しい場合、または左の値が右の値と等しい場合、四角形は空になり、操作なしが実現されます。
ドライバーは、Direct3D 変換規則に従って、色の値を変換先の形式に変換し、クランプする必要があります。 たとえば、ビューの形式が DXGI_FORMAT_R8G8B8A8_UNORMの場合は、入力を 0.0f から 1.0f (+INF -> 1.0f (0XFF)/NaN -> 0.0f) にクランプします。
形式が整数 ( DXGI_FORMAT_R8G8B8A8_UINT など) の場合は、入力を整数浮動小数点数として受け取ります。 したがって、235.0f は 235 にマップされます (0 に丸め、範囲外/INF 値がターゲット範囲にクランプされ、NaN が 0 になります)。
カラー マッピングを次に示します。
- Color[0]: R (ビデオの場合は Y)
- Color[1]: G (ビデオの場合は U/Cb)
- Color[2]: B (ビデオの場合は V/Cr)
- Color[3]: A
YUV 形式または YCbBr 形式のビデオ ビューの場合、 ClearView は色の値を変換しません。 形式名が_UNORMや_UINTなどを示していない場合、 ClearView は_UINTと見なします。 したがって、235.0f は 235 にマップされます (0 に丸め、範囲外/INF 値がターゲット範囲にクランプされ、NaN が 0 になります)。
サブサンプリングされた RTV または UAV ビデオ サーフェスの Microsoft Direct3D ビューの場合、ビューのサイズは、基になるビデオ ピクセルの論理数ではなく、ビュー形式のピクセル数に基づいていることに注意してください。 たとえば、サーフェスの形式が 1920 x 1080 ピクセルの YUY2 で、RTV で DXGI_FORMAT_R8G8B8A8_UINT形式が使用されている場合です。 ビューは Direct3D に対して、水平方向に 1920/2 = 960 R8G8B8A8 ピクセルと表示されます。 そのため、 ClearView に渡される四角形はすべて、この空間で解釈されます。 さらに、R8G8B8A8、真 のR8G8B8A8サーフェスと違いがないかのように、4 つのコンポーネントすべてに対して明確な値 が 取得されます。 この場合、R、G、B、A は標準の RGBA カラー値を意味しません。代わりに、メモリ内の場所を識別し、呼び出し元は、ビデオ 画面のコンテキストでその場所にデータを配置することが何を意味するかを理解する責任があります。
ただし、ビデオ サーフェイスのビデオ ビュー (CreateVideoDecoderOutputView 関数およびその他の XxxInputView 関数や XxxOutputView 関数に提供されるビューなど) は、完全な論理ディメンションに表示されます。 この場合、水平寸法は幅が 1920 ピクセルであるため、ClearView に渡される RECT 構造体ではこれを考慮します。 このような RECTは、サブサンプリングされたブロックをまたがないように配置する必要があります。それ以外の場合、ランタイムはこの関数の呼び出しを削除します。 ビデオ ビューの場合は、サブサンプリング形式に対して YUV 色を適切にレプリケートする必要があります。 たとえば、 ClearView 呼び出しの YUV には、YUY2 サーフェス内の各ブロックに対して Y 値が重複しています。
D3D10_DDI_RECT構造体は RECT 構造体として定義されます。
typedef RECT D3D10_DDI_RECT;
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 8 |
サポートされている最小のサーバー | Windows Server 2012 |
対象プラットフォーム | デスクトップ |
Header | d3d10umddi.h (D3d10umddi.h を含む) |