D3DDDI_BLTFLAGS結構 (d3dumddi.h)
D3DDDI_BLTFLAGS 結構會識別要執行的位區塊傳輸類型(bitblt)。
語法
typedef struct _D3DDDI_BLTFLAGS {
union {
struct {
UINT Point : 1;
UINT Linear : 1;
UINT SrcColorKey : 1;
UINT DstColorKey : 1;
UINT MirrorLeftRight : 1;
UINT MirrorUpDown : 1;
UINT LinearToSrgb : 1;
UINT Rotate : 1;
UINT BeginPresentToDwm : 1;
UINT ContinuePresentToDwm : 1;
UINT EndPresentToDwm : 1;
#if ...
UINT Reserved : 21;
UINT Discard : 1;
UINT NoOverwrite : 1;
UINT Tileable : 1;
#else
UINT Reserved : 18;
#endif
};
UINT Value;
};
} D3DDDI_BLTFLAGS;
成員
Point
UINT 值,指定是否要在位區塊傳輸中使用點篩選。 設定這個成員相當於設定 32 位 Value 成員的第一個位 (0x00000001)。
Linear
UINT 值,指定是否要在位區塊傳輸中使用線性篩選。 設定此成員相當於設定 32 位 Value 成員的第二個位 (0x00000002)。
SrcColorKey
UINT 值,指定是否要使用 ColorKey 成員中的值來執行來源色彩索引鍵。 也就是說,來源介面中符合色彩索引鍵的任何圖元不應複製到目的介面,而且應該複製不符合色彩索引鍵的所有來源圖元。
設定此成員相當於設定 32 位 Value 成員的第三位 (0x00000004)。
DstColorKey
UINT 值,指定是否使用 ColorKey 成員中的值來執行目的地色彩索引鍵。 也就是說,符合色彩索引鍵的目的地介面中的任何像素都應該取代為來源介面中的對應圖元,而且不應取代不符合色彩索引鍵的所有目的地圖元。
設定這個成員相當於設定 32 位 Value 成員的第四位 (0x00000008)。
MirrorLeftRight
UINT 值,指定來源表面的內容是否沿著位圖中軸水準翻轉至目的地表面。 也就是說,來源介面左側的內容會複製到目的地介面的右側,反之亦然。
設定這個成員相當於設定 32 位 Value 成員的第五位 (0x00000010)。
MirrorUpDown
UINT 值,指定來源表面的內容是否垂直沿著位圖中軸向目的地表面翻轉。 也就是說,來源介面頂端的內容會複製到目的地介面的底部,反之亦然。
設定這個成員相當於設定 32 位 Value 成員的第六位 (0x00000020)。
LinearToSrgb
UINT 值,指定是否要在 bitblt 作業期間將線性格式的來源轉換成 sRGB 格式。 sRGB 格式已修正 gamma。 如需 sRGB 格式的詳細資訊,請參閱 sRGB 網站。
設定此成員相當於設定 32 位 Value 成員的第七位 (0x00000040)。
Rotate
UINT 值,指定是否要在 bitblt 作業期間旋轉來源。
設定此成員相當於設定 32 位 Value 成員的第八位 (0x00000080)。
BeginPresentToDwm
UINT 值,指定 Microsoft Direct3D 運行時間是否在 bitblt 作業期間開始 DWM 目前作業。 如需 beginPresentToDwm 的詳細資訊,請參閱。
設定這個成員相當於設定 32 位 Value 成員的第九位 (0x00000100)。
ContinuePresentToDwm
UINT 值,指定 Direct3D 執行時間是否在 bitblt 作業期間繼續執行 DWM 目前作業。 如需continuePresentToDwm 的詳細資訊,請參閱。
設定這個成員相當於設定 32 位 Value 成員的第十位 (0x00000200)。
EndPresentToDwm
UINT 值,指定 Direct3D 執行時間是否在 bitblt 作業期間結束 DWM 目前作業。 如需 EndPresentToDwm的詳細資訊,請參閱。
設定此成員相當於設定 32 位 Value 成員的第十一位 (0x00000400)。
Reserved
這個成員是保留的,而且應該設定為零。 將此成員設定為零相當於將 32 位 值 成員的剩餘 21 位 (0xFFFFF800) 設定為零。
這個成員是保留的,而且應該設定為零。
將此成員設定為零相當於將 32 位 值 成員的剩餘 18 位 (0xFFFFC000) 設定為零。
從 Windows 8 開始支援。
Discard
表示使用者模式顯示驅動程式可以捨棄整個資源的先前內容。 驅動程式可以利用這項功能來優化效能和記憶體使用量。
如果這個成員不是 NULL,NoOverwrite,且 可磚化 必須 NULL。
設定此成員相當於將 32 位 Value 成員的第十二位 (0xFFFFF800) 設定為零。
從 Windows 8 開始支援。
NoOverwrite
表示呼叫端會保證使用新數據寫入表面的部分目前不會由任何先前的轉譯作業參考或存取。 驅動程式可以利用這項功能來優化效能和記憶體使用量。
如果這個成員不是 NULL,則必須 NULLDiscard。
設定這個成員相當於將 32 位 Value 成員的第十三位 (0x00001000) 設定為零。
從 Windows 8 開始支援。
Tileable
針對以磚為基礎的延後轉譯,表示複製作業只能在來源或目的地資源中目前處理的磚上運作,而且場景不需要在所有磚中排清。
如果這個成員不是 NULL,則必須 NULLDiscard。
設定此成員相當於將 32 位 Value 成員的第十四位 (0x00002000) 設定為零。
從 Windows 8 開始支援。
Value
包含在D3DDDI_BLTFLAGS中的成員,可以保存一個32位值,識別要執行的 bitblt 類型。
言論
BeginPresentToDwm、ContinuePresentToDwm和 EndPresentToDwm 位字段旗標會通知使用者模式顯示驅動程式在 Direct3D 運行時間執行 DWM 簡報作業的一部分的時間。 由於 DWM 目前作業可能發生在多個步驟中,因此 Direct3D 運行時間會使用這些旗標來標記一連串位中的步驟。 例如:
- 如果目前的作業是由一個 bitblt 所組成,則 bitblt 會標示如下:
- BeginPresentToDwm = TRUE;
- ContinuePresentToDwm = FALSE;
- EndPresentToDwm = TRUE;
- 如果目前的作業包含兩個 bitblts,則 bitblts 會標示為兩個循序 bitblt 作業所示:
- 第一個 bitblt:
- BeginPresentToDwm = TRUE;
- ContinuePresentToDwm = FALSE;
- EndPresentToDwm = FALSE;
- 第二個 bitblt:
- BeginPresentToDwm = FALSE;
- ContinuePresentToDwm = FALSE;
- EndPresentToDwm = TRUE;
- 第一個 bitblt:
- 如果目前的作業是由三個或多個 bitblts 所組成,則 bitblts 會標示為下列循序 bitblt 作業所示:
- 第一個 bitblt:
- BeginPresentToDwm = TRUE;
- ContinuePresentToDwm = FALSE;
- EndPresentToDwm = FALSE;
- 第二個和連續的 bitblts,不包括最終的 bitblt:
- BeginPresentToDwm = FALSE;
- ContinuePresentToDwm = TRUE;
- EndPresentToDwm = FALSE;
- 最終 bitblt:
- BeginPresentToDwm = FALSE;
- ContinuePresentToDwm = FALSE;
- EndPresentToDwm = TRUE;
- 第一個 bitblt:
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | 從 Windows Vista 開始提供。 |
標頭 | d3dumddi.h (包括 D3dumddi.h) |