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 オペレーティング システムで使用できます。 |
ターゲット プラットフォーム の | デスクトップ |
ヘッダー | d3dumddi.h (D3dumddi.h を含む) |