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) |