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 值,指定是否要在位區塊傳輸中使用點篩選。 設定此成員相當於 (0x00000001) 設定 32 位 Value 成員的第一個位。
Linear
UINT 值,指定是否要在位區塊傳輸中使用線性篩選。 設定此成員相當於 (0x00000002) 設定 32 位 Value 成員的第二個位。
SrcColorKey
UINT 值,指定是否要使用 ColorKey 成員中的值來執行來源色彩索引鍵。 也就是說,來源介面中符合色彩索引鍵的任何圖元不應複製到目的地介面,而且應該複製不符合色彩索引鍵的所有來源圖元。
設定此成員相當於 (0x00000004) 設定 32 位 Value 成員的第三個位。
DstColorKey
UINT 值,指定是否要使用 ColorKey 成員中的值來執行目的地色彩索引鍵。 也就是說,符合色彩索引鍵之目的地介面中的任何圖元,都應該以來源介面中的對應圖元取代,而且不應該取代不符合色彩索引鍵的所有目的地圖元。
設定此成員相當於 (0x00000008) 設定 32 位 Value 成員的第四個位。
MirrorLeftRight
UINT 值,指定來源表面的內容是否沿著位軸水準翻轉至目的地介面。 也就是說,來源介面左側的內容會複製到目的地介面的右側,反之亦然。
設定此成員相當於設定 32 位 Value 成員的第五位 (0x00000010) 。
MirrorUpDown
UINT 值,指定來源表面的內容是否垂直沿著位軸翻轉至目的地介面。 也就是說,來源介面頂端的內容會複製到目的地介面的底部,反之亦然。
設定此成員相當於 (0x00000020) 設定 32 位 Value 成員的第六個位。
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 的詳細資訊,請參閱。
設定此成員相當於 (0x00000200) 設定 32 位 Value 成員的第十位。
EndPresentToDwm
UINT 值,指定 Direct3D 執行時間是否在 bitblt 作業期間結束 DWM 存在作業。 如需 EndPresentToDwm 的詳細資訊,請參閱。
設定此成員相當於 (0x00000400) 設定 32 位 Value 成員的第十一位。
Reserved
這個成員是保留的,而且應該設定為零。 將此成員設定為零相當於將 32 位 Value 成員的其餘 21 位設定為零 (0xFFFFF800) 。
這個成員是保留的,而且應該設定為零。
將此成員設定為零相當於將 32 位 Value 成員的其餘 18 位 (0xFFFFC000) 設定為零。
從 Windows 8 開始支援。
Discard
表示使用者模式顯示驅動程式可以捨棄整個資源的先前內容。 驅動程式可以利用這項功能來優化效能和記憶體使用量。
如果這個成員不是 NULL,NoOverwrite 和 Tileable 必須是 NULL。
設定此成員相當於將 32 位 Value 成員的第十二位 (0xFFFFF800) 設定為零。
從 Windows 8 開始支援。
NoOverwrite
表示呼叫端保證任何先前轉譯作業目前不會參考或存取以新數據寫入的介面部分。 驅動程式可以利用這項功能來優化效能和記憶體使用量。
如果這個成員不是 NULL, 則 Discard 必須是 NULL。
設定此成員相當於將 32 位 Value 成員的第十三位 (0x00001000) 設定為零。
從 Windows 8 開始支援。
Tileable
針對以磚為基礎的延後轉譯,表示複製作業只能在來源或目的地資源中目前處理的磚上運作,而且場景不需要在所有磚中排清。
如果這個成員不是 NULL, 則 Discard 必須是 NULL。
設定此成員相當於將 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 (include D3dumddi.h) |