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 值,该值指定源图面的内容是否沿 bitblt 中的中心轴水平翻转到目标图面。 也就是说,源图面左侧的内容将复制到目标图面的右侧,反之亦然。
设置此成员等效于设置 32 位 Value 成员 (0x00000010) 的第五位。
MirrorUpDown
一个 UINT 值,该值指定源图面的内容是否沿 bitblt 中的中心轴垂直翻转到目标图面。 也就是说,源图面顶部的内容将复制到目标图面的底部,反之亦然。
设置此成员等效于设置 32 位 Value 成员 (0x00000020) 的第六位。
LinearToSrgb
一个 UINT 值,该值指定是否在 bitblt 操作期间将线性格式的源转换为 sRGB 格式。 sRGB 格式已更正为 gamma。 有关 sRGB 格式的详细信息,请参阅 sRGB 网站。
设置此成员等效于设置 32 位 Value 成员 (0x00000040) 的第七位。
Rotate
一个 UINT 值,该值指定在 bitblt 操作期间是否旋转源。
设置此成员等效于设置 32 位 Value 成员 (0x00000080) 的第 8 位。
BeginPresentToDwm
一个 UINT 值,该值指定 Microsoft Direct3D 运行时是否在 bitblt 操作期间开始 DWM 存在操作。 有关 BeginPresentToDwm 的详细信息,请参阅备注。
设置此成员等效于设置 32 位 Value 成员 (0x00000100) 的第 9 位。
ContinuePresentToDwm
一个 UINT 值,该值指定 Direct3D 运行时在 bitblt 操作期间是否继续 DWM 存在的操作。 有关 ContinuePresentToDwm 的详细信息,请参阅备注。
设置此成员等效于设置 32 位 Value 成员 (0x00000200) 的第 10 位。
EndPresentToDwm
一个 UINT 值,该值指定 Direct3D 运行时是否在 bitblt 操作期间结束 DWM 当前操作。 有关 EndPresentToDwm 的详细信息,请参阅备注。
设置此成员等效于设置 32 位 Value 成员 (0x00000400) 的第 11 位。
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 运行时使用这些标志在一系列 bitblts 中标记步骤。 例如:
- 如果当前操作由一个 bitblt 组成,则 bitblt 标记为如下:
- BeginPresentToDwm = TRUE;
- ContinuePresentToDwm = FALSE;
- EndPresentToDwm = TRUE;
- 如果当前操作由两个位节点组成,则 bitblts 将标记为两个连续 bitblt 运算中所示:
- 第一个 bitblt:
- BeginPresentToDwm = TRUE;
- ContinuePresentToDwm = FALSE;
- EndPresentToDwm = FALSE;
- 第二个 bitblt:
- BeginPresentToDwm = FALSE;
- ContinuePresentToDwm = FALSE;
- EndPresentToDwm = TRUE;
- 第一个 bitblt:
- 如果当前操作由三个或三个以上的 bitblt 组成,则按以下顺序 bitblt 运算中所示标记 bitblt:
- 第一个 bitblt:
- BeginPresentToDwm = TRUE;
- ContinuePresentToDwm = FALSE;
- EndPresentToDwm = FALSE;
- 第二个和连续的 bitblt,不包括最终 bitblt:
- BeginPresentToDwm = FALSE;
- ContinuePresentToDwm = TRUE;
- EndPresentToDwm = FALSE;
- 最终 bitblt:
- BeginPresentToDwm = FALSE;
- ContinuePresentToDwm = FALSE;
- EndPresentToDwm = TRUE;
- 第一个 bitblt:
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 从 Windows Vista 开始可用。 |
标头 | d3dumddi.h (包括 D3dumddi.h) |