次の方法で共有


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

こちらもご覧ください

D3DDDIARG_COMPOSERECTS

D3DDDI_DEVICEFUNCS