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 位 值 成员的第一位(0x00000001)。
Linear
一个 UINT 值,该值指定是否在位块传输中使用线性筛选。 设置此成员等效于设置 32 位 值 成员的第二位(0x00000002)。
SrcColorKey
一个 UINT 值,该值指定是否使用 ColorKey 成员中的值执行源颜色键。 也就是说,与颜色键匹配的源图面中的任何像素不应复制到目标图面,并且应复制与颜色键不匹配的所有源像素。
设置此成员相当于设置 32 位 值 成员(0x00000004)的第三位。
DstColorKey
一个 UINT 值,该值指定是否使用 ColorKey 成员中的值执行目标颜色键。 也就是说,与颜色键匹配的目标图面中的任何像素都应替换为源图面中的相应像素,不应替换与颜色键不匹配的所有目标像素。
设置此成员相当于设置 32 位 值 成员的第四位(0x00000008)。
MirrorLeftRight
一个 UINT 值,该值指定源图面的内容是否沿位图中的中心轴水平翻转到目标图面。 也就是说,源图面左侧的内容将复制到目标图面的右侧,反之亦然。
设置此成员相当于设置 32 位 值 成员(0x00000010)的第五位。
MirrorUpDown
一个 UINT 值,该值指定源图面的内容是否沿位图中的中心轴垂直翻转到目标图面。 也就是说,源图面顶部的内容将复制到目标图面的底部,反之亦然。
设置此成员相当于设置 32 位 值 成员的第六位(0x00000020)。
LinearToSrgb
一个 UINT 值,该值指定在 bitblt作期间是否将线性格式的源转换为 sRGB 格式。 sRGB 格式已更正 gamma。 有关 sRGB 格式的详细信息,请参阅 sRGB 网站。
设置此成员相当于设置 32 位 值 成员的第七位(0x00000040)。
Rotate
一个 UINT 值,该值指定是否在 bitblt作期间旋转源。
设置此成员相当于设置 32 位 值 成员(0x00000080)的第八位。
BeginPresentToDwm
一个 UINT 值,该值指定 Microsoft Direct3D 运行时是否在 bitblt作期间开始 DWM 存在作。 有关 BeginPresentToDwm的详细信息,请参阅“备注”。
设置此成员相当于设置 32 位 值 成员的第九位(0x00000100)。
ContinuePresentToDwm
一个 UINT 值,该值指定 Direct3D 运行时在 bitblt作期间是否继续执行 DWM 存在作。 有关 ContinuePresentToDwm的详细信息,请参阅“备注”。
设置此成员相当于设置 32 位 值 成员的第十位(0x00000200)。
EndPresentToDwm
一个 UINT 值,该值指定 Direct3D 运行时是否在 bitblt作期间结束 DWM 存在作。 有关 endPresentToDwm 的详细信息,请参阅“备注”。
设置此成员等效于设置 32 位 值 成员的第 11 位(0x00000400)。
Reserved
此成员是保留的,应设置为零。 将此成员设置为零相当于将 32 位 值 成员的剩余 21 位(0xFFFFF800)设置为零。
此成员是保留的,应设置为零。
将此成员设置为零相当于将 32 位 值 成员的剩余 18 位(0xFFFFC000)设置为零。
从 Windows 8 开始支持。
Discard
指示用户模式显示驱动程序可以放弃整个资源以前的内容。 驱动程序可以利用此功能来优化性能和内存使用情况。
如果此成员未 NULL,则 NoOverwrite,并且必须 可平铺NULL。
设置此成员相当于将 32 位 Value 成员的第 12 位 (0xFFFFF800) 设置为零。
从 Windows 8 开始支持。
NoOverwrite
指示调用方保证任何以前的呈现作当前不会引用或访问使用新数据写入的图面部分。 驱动程序可以利用此功能来优化性能和内存使用情况。
如果此成员未 NULL,则 放弃 必须 NULL。
设置此成员相当于将 32 位 值 成员的第 13 位(0x00001000)设置为零。
从 Windows 8 开始支持。
Tileable
对于基于磁贴的延迟呈现,指示复制作只能对源或目标资源中当前处理的磁贴进行作,并且场景不必在所有磁贴中刷新。
如果此成员未 NULL,则 放弃 必须 NULL。
设置此成员相当于将 32 位 Value 成员的第 14 位 (0x00002000) 设置为零。
从 Windows 8 开始支持。
Value
联合中包含的成员,该成员包含在D3DDDI_BLTFLAGS中,可以保存一个 32 位值,用于标识要执行的 bitblt 类型。
言论
BeginPresentToDwm、ContinuePresentToDwm和 EndPresentToDwm 位字段标志通知用户模式显示驱动程序在 Direct3D 运行时执行 DWM 演示作部分的时间。 由于 DWM 存在作可能发生在多个步骤中,因此 Direct3D 运行时使用这些标志来标记一系列位片段中的步骤。 例如:
- 如果当前作包含一个 bitblt,则 bitblt 将标记为如下所示:
- BeginPresentToDwm = TRUE;
- ContinuePresentToDwm = FALSE;
- EndPresentToDwm = TRUE;
- 如果当前作由两个位比特组成,则 bitblts 将标记为两个顺序 bitblt作中所示:
- 第一个 bitblt:
- BeginPresentToDwm = TRUE;
- ContinuePresentToDwm = FALSE;
- EndPresentToDwm = FALSE;
- 第二位位:
- BeginPresentToDwm = FALSE;
- ContinuePresentToDwm = FALSE;
- EndPresentToDwm = TRUE;
- 第一个 bitblt:
- 如果当前作由三个或更多位比特组成,则按以下顺序 bitblt作中所示标记位位:
- 第一个 bitblt:
- BeginPresentToDwm = TRUE;
- ContinuePresentToDwm = FALSE;
- EndPresentToDwm = FALSE;
- 第二位和连续位,不包括最终位:
- BeginPresentToDwm = FALSE;
- ContinuePresentToDwm = TRUE;
- EndPresentToDwm = FALSE;
- 最终位:
- BeginPresentToDwm = FALSE;
- ContinuePresentToDwm = FALSE;
- EndPresentToDwm = TRUE;
- 第一个 bitblt:
要求
要求 | 价值 |
---|---|
最低支持的客户端 | 从 Windows Vista 开始可用。 |
标头 | d3dumddi.h (包括 D3dumddi.h) |