DXGK_GDIARG_ALPHABLEND結構(d3dkmddi.h)
DXGK_GDIARG_ALPHABLEND 結構描述 GDI 硬體加速 Alpha 混合作業的特性。
語法
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 結構,定義要複製的矩形區域。 這個來源矩形是在來源介面的座標系統中指定,由兩個點定義:左上方和右下角。 定義矩形的兩個點一律會排序良好。 這個矩形永遠不會超過來源表面的界限,因此它永遠不會超過來源介面。 此矩形會對應至 DstRect所定義的目的地矩形。 如需詳細資訊,請參閱。
[in] DstRect
RECT 結構,定義要修改的矩形區域。 這個矩形是在目的介面的座標系統中指定,由兩個點定義:左上方和右下角。 矩形是右下角獨佔;也就是說,其下邊緣和右邊緣不是位區塊傳輸的一部分。 定義矩形的兩個點一律會排序良好。
DstRect 所定義的目的矩形 可以超過目的介面的界限,但子矩形無法。 此外,所有子矩形都保證能容納在目的介面內。 子矩形可以透過小於目的矩形的周框進一步限制。
[in] SrcAllocationIndex
配置清單中的專案索引,指定 SrcRect 來源矩形所參考的配置。
[in] DstAllocationIndex
配置清單中的專案索引,指定 DstRect 目的地矩形所參考的配置。
[in] NumSubRects
DstRect 目的矩形所系結之目的介面空間中的子矩形數目。
[in] pSubRects
目的地介面空間中子矩形的指標。
[in] SourceConstantAlpha
要套用至整個來源介面的常數混合因數。 此值在 [0,255] 的範圍內,其中 0 是完全透明的,而 255 則完全不透明。
[in] SourceHasAlpha
定義介面是否假設有 Alpha 色板。 如果 TRUE,則會假設表面具有 Alpha 色板;否則,此值會 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 |
標頭 | d3dkmddi.h (包括 D3dkmddi.h) |