次の方法で共有


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
ヘッダー d3dkmddi.h (D3dkmddi.h を含む)

関連項目

DXGK_GDIARG_ALPHABLEND

DXGK_GDIARG_TRANSPARENTBLT

DXGK_PRESENTATIONCAPS

RECT