次の方法で共有


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未満にする必要があります。
  • サーフェスと頂点バッファーは、同じディスプレイ デバイス (グラフィックス コンテキスト) を使用して作成する必要があります。
  • ローカル表示メモリは、宛先サーフェスに対して指定する必要があります。
次のコード例は、ComposeRects 実行する操作を示しています。
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 を含む)

関連項目

D3DDDIARG_COMPOSERECTS

D3DDDI_DEVICEFUNCS