DXGK_GDIARG_STRETCHBLT 構造体 (d3dkmddi.h)

DXGK_GDIARG_STRETCHBLT構造体は、GDI ハードウェア高速ストレッチ ビット ブロック転送 (bitblt) 操作の特性を記述します。

構文

typedef struct _DXGK_GDIARG_STRETCHBLT {
  [in] RECT  SrcRect;
  [in] RECT  DstRect;
  [in] UINT  DstAllocationIndex;
  [in] UINT  SrcAllocationIndex;
       UINT  NumSubRects;
  [in] RECT  *pSubRects;
  union {
    struct {
      UINT Mode : 16;
      UINT MirrorX : 1;
      UINT MirrorY : 1;
    };
    [in] UINT Flags;
  };
  [in] UINT  SrcPitch;
} DXGK_GDIARG_STRETCHBLT;

メンバー

[in] SrcRect

コピーする四角形の領域を定義する RECT 構造体。 この四角形は、ソース サーフェスの座標系で指定され、左上と右下の 2 つのポイントで定義されます。 四角形を定義する 2 つのポイントは、常に適切に並べられます。

ソース四角形がソース サーフェスの境界を超えることはありません。そのため、ソース サーフェスがオーバーハングすることはありません。

この四角形は、 DstRect によって定義された変換先の四角形にマップされます。

詳細については、「解説」を参照してください。

[in] DstRect

変更する四角形領域を定義する RECT 構造体。 この四角形は、変換先サーフェスの座標系で指定され、左上と右下の 2 つのポイントで定義されます。 四角形は右下の排他的です。つまり、その下端と右端はビット ブロック転送の一部ではありません。 四角形を定義する 2 つのポイントは、常に適切に並べられます。

DstRect によって定義された変換先の四角形は、変換先サーフェスの境界を超えることができますが、サブ四角形は使用できません。 さらに、すべてのサブ四角形がターゲット サーフェス内に収まることが保証されます。 サブ四角形は、移動先の四角形よりも小さい外接する四角形によってさらに制約できます。

詳細については、「解説」を参照してください。

[in] DstAllocationIndex

DstRect 変換先の四角形によって参照される割り当てを指定する割り当てリスト内の要素のインデックス。

[in] SrcAllocationIndex

SrcRect ソース四角形によって参照される割り当てを指定する割り当てリスト内の要素のインデックス。

NumSubRects

DstRect 変換先の四角形で囲まれた移動先サーフェス空間内のサブ四角形の数。

[in] pSubRects

DstRect 変換先の四角形で囲まれた移動先サーフェス空間内のサブ四角形へのポインター。

[in] Mode

Wingdi.h で定義されている次の値が設定されているかどうかに基づいて、ソース ピクセルを結合して出力ピクセルを生成する方法を指定します。

意味
BLACKONWHITE 縮小ビット ブロック転送では、ピクセルをブール値 AND 演算と組み合わせる必要があります。 ストレッチ ビット ブロック転送では、ピクセルをレプリケートする必要があります。
WHITEONBLACK 縮小ビット ブロック転送では、ピクセルをブール値 OR 演算と組み合わせる必要があります。 ストレッチ ビット ブロック転送では、ピクセルをレプリケートする必要があります。

この種類の操作は、ドライバーがDXGK_PRESENTATIONCAPS構造体で SupportMonoStretchBltModes メンバーを設定している場合にのみ処理されます。

[in] MirrorX

xdirection のミラー モードでストレッチ ビット ブロック転送を実行するかどうかを指定します。 この種類の操作は、MirrorX の値が 0 以外で、ドライバーがDXGK_PRESENTATIONCAPS構造体で SupportMirrorStretchBlt メンバーを設定した場合にのみ処理されます。

[in] MirrorY

ストレッチ ビット ブロック転送を y 方向のミラー モードで実行するかどうかを指定します。 この種類の操作は、MirrorY の値が 0 以外で、ドライバーが DXGK_PRESENTATIONCAPS 構造体で SupportMirrorStretchBlt メンバーを設定した場合にのみ処理されます。

[in] Flags

ドライバー コードのデバッグに使用できるオプションの UINT 値。

[in] SrcPitch

ソースサーフェスのピッチ (バイト単位)。

注釈

x と y のストレッチ比率は、 DstRect メンバーと SrcRect メンバーの x サイズと y サイズの比率としてそれぞれ計算されます。

Wingdi.h で定義されている HALFTONE モードとSTRETCH_HALFTONE モードは、Mode メンバーでは設定されません。 COLORONCOLOR モードは、 DXGK_GDIARG_ALPHABLEND および DXGK_GDIARG_TRANSPARENTBLT 構造体で設定できます。

サブ四角形がソースサーフェス空間に変換されると、結果はソースサーフェス内に存在することが保証されます。 変換先サーフェス内のサブ四角形の座標をソースサーフェスの座標に変換するには、次の数式で定義します。

  • (Xd,Yd) はサブ四角形内の点です
  • (Xs、Ys) は、ソース四角形内のポイントです
float Ws = SrcRect.right - SrcRect.left;
float Wd = DstRect.right - DstRect.left;
int Xs = round((Xd - DstRect.left + 0.5) * Ws/Wd + SrcRect.left - 0.5)
OR
int Xs = truncate((Xd - DstRect.left + 0.5) * Ws/Wd + SrcRect.left)

float Hs = SrcRect.bottom - SrcRect.top;
float Hd = DstRect.bottom - DstRect.top;
int Ys = round((Yd - DstRect.top + 0.5) * Hs/Hd + SrcRect.top - 0.5)
OR
int Ys = truncate((Yd - DstRect.top + 0.5) * Hs/Hd + SrcRect.top)

要件

要件
サポートされている最小のクライアント Windows 7
Header d3dkmddi.h (D3dkmddi.h を含む)

こちらもご覧ください

DXGK_GDIARG_ALPHABLEND

DXGK_GDIARG_TRANSPARENTBLT

DXGK_PRESENTATIONCAPS

Rect