DXGK_GDIARG_ALPHABLEND構造体 (d3dkmddi.h)
DXGK_GDIARG_ALPHABLEND構造体は、GDI ハードウェア アクセラレータアルファ ブレンド操作の特性を記述します。
構文
typedef struct _DXGK_GDIARG_ALPHABLEND {
[in] RECT SrcRect;
[in] RECT DstRect;
[in] UINT SrcAllocationIndex;
[in] UINT DstAllocationIndex;
[in] UINT NumSubRects;
[in] RECT *pSubRects;
[in] BYTE SourceConstantAlpha;
[in] BOOLEAN SourceHasAlpha;
[in] UINT SrcPitch;
} DXGK_GDIARG_ALPHABLEND;
メンバー
[in] SrcRect
コピーする四角形の領域を定義する RECT 構造体。 このソース四角形は、ソース サーフェスの座標系で指定され、左上と右下の 2 つのポイントで定義されます。 四角形を定義する 2 つのポイントは、常に適切に並べられます。 この四角形はソース サーフェスの境界を超えることはありません。そのため、ソース サーフェスがオーバーハングすることはありません。 この四角形は、 DstRect によって定義された変換先の四角形にマップされます。 詳細については、「解説」を参照してください。
[in] DstRect
変更する四角形領域を定義する RECT 構造体。 この四角形は、変換先サーフェスの座標系で指定され、左上と右下の 2 つのポイントで定義されます。 四角形は右下の排他的です。つまり、その下端と右端はビット ブロック転送の一部ではありません。 四角形を定義する 2 つのポイントは、常に適切に並べられます。
DstRect によって定義された変換先の四角形は、変換先サーフェスの境界を超えることができますが、サブ四角形は使用できません。 さらに、すべてのサブ四角形がターゲット サーフェス内に収まることが保証されます。 サブ四角形は、移動先の四角形よりも小さい外接する四角形によってさらに制約できます。
[in] SrcAllocationIndex
SrcRect ソース四角形によって参照される割り当てを指定する割り当てリスト内の要素のインデックス。
[in] DstAllocationIndex
DstRect 変換先の四角形によって参照される割り当てを指定する割り当てリスト内の要素のインデックス。
[in] NumSubRects
DstRect 変換先の四角形で囲まれた移動先サーフェス空間内のサブ四角形の数。
[in] pSubRects
移動先サーフェス空間のサブ四角形へのポインター。
[in] SourceConstantAlpha
ソース サーフェス全体に適用する定数ブレンド係数。 この値は [0,255] の範囲内で、0 は完全に透明で、255 は完全に不透明です。
[in] SourceHasAlpha
サーフェスにアルファ チャネルがあると見なされるかどうかを定義します。 TRUE の場合、サーフェスにはアルファ チャネルがあると見なされます。それ以外の場合、値は FALSE です。
[in] SrcPitch
ソースサーフェスのピッチ (バイト単位)。
注釈
ストレッチ ビット ブロック転送 (bitblt) 操作が必要な場合、x と y のストレッチ比率は 、DstRect メンバーと SrcRect メンバーの x サイズと y サイズの比率としてそれぞれ計算され、*Wingdi.h の COLORONCOLOR 値が設定されているかのようにストレッチ操作が続行されます。 縮小ビット ブロック転送では、ピクセルを結合する必要がないように、十分なピクセルを無視する必要があります。 ストレッチ ビット ブロック転送では、ピクセルをレプリケートする必要があります。
サブ四角形がソースサーフェス空間に変換されると、結果はソースサーフェス内に存在することが保証されます。 変換先サーフェスのサブ四角形の座標をソースサーフェスの座標に変換する方法は、次の数式で定義されます。
- (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)</code></pre>
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 7 |
Header | d3dkmddi.h (D3dkmddi.h を含む) |