PFND3DDDI_COMPOSERECTS コールバック関数 (d3dumddi.h)
ComposeRects 関数は、ソース サーフェスから変換先サーフェスまでの 2 次元領域を構成します。
構文
PFND3DDDI_COMPOSERECTS Pfnd3dddiComposerects;
HRESULT Pfnd3dddiComposerects(
HANDLE hDevice,
const D3DDDIARG_COMPOSERECTS *unnamedParam2
)
{...}
パラメーター
hDevice
ディスプレイ デバイス (グラフィックス コンテキスト) へのハンドル。
unnamedParam2
pData [in]
四 角形の領域 を構成するために使用されるパラメーターを指定するD3DDDIARG_COMPOSERECTS構造体へのポインター。
戻り値
ComposeRects は 、次のいずれかの値を返します。
リターン コード | 説明 |
---|---|
S_OK | 四角形の領域は正常に構成されました。 |
E_OUTOFMEMORY | ComposeRects は、完了するために必要なメモリを割り当てませんでした。 |
注釈
ComposeRects 関数には、次の制約と検証が適用されます。
- ドライバーは、ソースサーフェス内に完全に存在しないソース矩形領域を無視する必要があります。
- オフセットを適用した後の移動先の四角形領域---は、変換先サーフェスの一部または完全な外側にすることができます。 宛先の四角形の領域は、部分的に外側の場合はクリップされ、完全に外側の場合は拒否されるか、完全にクリップされます。
- ソースとコピー先に同じサーフェスを指定することはできません。
- ComposeRects で使用されるサーフェスと頂点バッファーはロックしないでください。
- ソース サーフェスとターゲット サーフェスは、作成時にピクセルあたり 1 ビット (D3DDDIFMT_A1) として書式設定されます。
- デバッグ ビルドでは、Microsoft Direct3D ランタイムは、変換先の四角形領域の説明のインデックスごとにソースの四角形の領域の説明が存在することを検証します。 製品版のビルドでは、無効なインデックスが存在する場合、 ComposeRects はエラーを返します。
- 四角形の領域の数は、算術演算中に内部オーバーフローを防ぐために、0xFFFF未満にする必要があります。
- サーフェスと頂点バッファーは、同じディスプレイ デバイス (グラフィックス コンテキスト) を使用して作成する必要があります。
- ローカル表示メモリは、宛先サーフェスに対して指定する必要があります。
for (UINT i=0; i < COMPOSERECTS.NumDstRects; i++) {
if (i >= Size(VertexBuffer(hDstRectDescsVB)) / sizeof(D3DCOMPOSERECTDSTDESC))
Ignore the rectangle;
if (VertexBuffer(hDstRectDescsVB)[i].RectDescIndex >= Size(VertexBuffer(hSrcRectDescsVB)) / sizeof(D3DCOMPOSERECTSRCDESC))
Ignore the rectangle;
SourceRectangle = VertexBuffer(hSrcResource)[VertexBuffer(hDstRectDescsVB)[i].RectDescIndex];
DestinationRectangle.X = {VertexBuffer(hDstRectDescsVB)[i].X + COMPOSERECTS.Xoffset;
DestinationRectangle.Y = {VertexBuffer(hDstRectDescsVB)[i].Y + COMPOSERECTS.Yoffset;
DestinationRectangle.Width = SourceRectangle.Width;
DestinationRectangle.Height = SourceRectangle.Height;
Perform COMPOSERECTS.Operation for each pixel;
}
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista 以降のバージョンの Windows オペレーティング システムで使用できます。 |
対象プラットフォーム | デスクトップ |
Header | d3dumddi.h (D3dumddi.h を含む) |