FORMATOP 结构描述可以使用此类图面执行的图面格式和作。
语法
typedef struct _FORMATOP {
[in] D3DDDIFORMAT Format;
[out] UINT Operations;
[out] UINT FlipMsTypes;
[out] UINT BltMsTypes;
[out] UINT PrivateFormatBitCount;
} FORMATOP;
成员
[in] Format
指示图面像素格式的 D3DDDIFORMAT类型值。
[out] Operations
以下标志的有效按位 OR,指示可以使用 Format 成员中指定的像素格式在图面上执行的作。 以下一些标志表示应使用其他标志。 如果驱动程序设置一个表示其他标志的标志,则不需要驱动程序来设置隐含标志,Direct3D 运行时将确定隐含标志的使用。
FORMATOP_TEXTURE (0x000000001L)
指定的像素格式的图面可用作 MIP 映射的纹理。
FORMATOP_VOLUMETEXTURE (0x000000002L)
此格式的图面可用作卷纹理。 请注意,此标志独立于FORMATOP_TEXTURE。 因此,像素格式可用于卷纹理,而不能用于传统的 MIP 映射纹理。
FORMATOP_CUBETEXTURE (0x000000004L)
此格式的图面可用作立方环境地图纹理。 请注意,此标志独立于FORMATOP_TEXTURE。 因此,像素格式可用于立方环境地图纹理,而不适用于传统的 MIP 映射纹理。
FORMATOP_OFFSCREEN_RENDERTARGET (0x000000008L)
无论显示模式的像素格式如何,此格式的图面都可以用作屏幕外呈现目标,前提是当前显示模式的像素格式报告了FORMATOP_DISPLAYMODE和FORMATOP_3DACCELERATION。 如果当前显示模式的像素格式未设置这些标志,则即使呈现目标处于屏幕外,此模式下也没有 3D 加速可用。 FORMATOP_OFFSCREEN_RENDERTARGET标志可以与FORMATOP_TEXTURE结合使用,以指示设备可以呈现为指定像素格式的纹理。
FORMATOP_OFFSCREEN_RENDERTARGET标志还表示FORMATOP_SAME_FORMAT_RENDERTARGET和FORMATOP_SAME_FORMAT_UP_TO_ALPHA_RENDERTARGET标志。
FORMATOP_SAME_FORMAT_RENDERTARGET (0x000000010L)
此格式的图面可用作呈现目标,但仅当图面的像素格式与当前显示模式的像素格式匹配时。 此标志不仅适用于屏幕外呈现目标,还可以在显示模式的像素格式上指定,以指示呈现目标功能。 此标志可以与FORMATOP_TEXTURE结合使用,以指示设备可以呈现为指定像素格式的纹理。
FORMATOP_SAME_FORMAT_RENDERTARGET标志还表示FORMATOP_SAME_FORMAT_UP_TO_ALPHA_RENDERTARGET标志。
FORMATOP_ZSTENCIL (0x000000040L)
此格式的图面可用作 Z/模具缓冲区,但前提是 Z/模具图面的深度与深度缓冲区附加到的呈现目标的颜色深度匹配。 在决定 Z/模具与颜色缓冲区深度之间的匹配时,请使用像素步幅。
FORMATOP_ZSTENCIL_WITH_ARBITRARY_COLOR_DEPTH (0x000000080L)
无论图面附加到的呈现目标的颜色深度如何,此格式的图面都可以用作 Z/模具缓冲区。
FORMATOP_ZSTENCIL_WITH_ARBITRARY_COLOR_DEPTH标志还表示FORMATOP_ZSTENCIL标志。
FORMATOP_SAME_FORMAT_UP_TO_ALPHA_RENDERTARGET (0x00000100L)
如果当前显示模式相同且忽略 alpha 通道,则此格式的图面可用作呈现目标。 例如,如果设备可以在显示模式X8R8G8B8时呈现为A8R8G8B8,则A8R8G8B8的格式作列表项应设置此标志。
FORMATOP_DISPLAYMODE (0x00000400L)
具有驱动程序模型支持的此像素格式的显示模式(包括 Flip)。 不应对 alpha 格式设置此标志。
FORMATOP_3DACCELERATION (0x000000800L)
图形加速器可以在具有此像素格式的显示模式下支持某种级别的 Microsoft Direct3D 加速,并且驱动程序可以在此模式下创建上下文(对于某些呈现目标格式)。 仅当报告显示模式格式(通过指定FORMATOP_DISPLAYMODE)时,才能使用此标志。 不应使用此标志来报告屏幕外呈现目标格式。
FORMATOP_PIXELSIZE (0x00001000L)
驱动程序在 PrivateFormatBitCount 成员中填充了格式的每像素位数。
如果驱动程序要求托管图面和纹理使用专用格式(驱动程序可以处理但不能由 Direct3D 运行时本机处理的格式),驱动程序必须指定FORMATOP_PIXELSIZE和 PrivateFormatBitCount中的像素大小。
FORMATOP_CONVERT_TO_ARGB (0x00002000L)
此格式的源图面可以转换为具有指定FORMATOP_MEMBEROFGROUP_ARGB标志的 RGB 像素格式的任何目标图面。
FORMATOP_OFFSCREENPLAIN (0x00004000L)
驱动程序可以延伸至此格式的填充图面和颜色填充图面。
FORMATOP_SRGBREAD (0x00008000L)
可以从 sRGB格式纹理(即采样器线性化查找数据)读取此格式的图面。
FORMATOP_BUMPMAP (0x00010000L)
此格式的图面可用作凹凸环境地图纹理。 请注意,此标志独立于FORMATOP_TEXTURE。 因此,像素格式可用于凹凸环境地图纹理,而不是用于传统的 MIP 映射纹理。
FORMATOP_DMAP (0x00020000L)
排量地图采样器可以采样此格式的图面。
FORMATOP_NOFILTER (0x00040000L)
此格式的图面不能用于纹理筛选。
FORMATOP_MEMBEROFGROUP_ARGB (0x00080000L)
此格式的目标图面可以从具有指定FORMATOP_CONVERT_TO_ARGB标志的像素格式的任何源图面转换。 驱动程序只能为每个通道指定至少 5 位颜色信息的 ARGB 图面FORMATOP_MEMBEROFGROUP_ARGB。 也就是说,D3DDDIFMT_A1R5G5B5格式有效,但D3DDDIFMT_A4R4G4B4格式无效。 如果驱动程序指定格式无效的FORMATOP_MEMBEROFGROUP_ARGB,Direct3D 运行时将阻止 Direct3D HAL 加载。 请注意,虽然此标志指示 ARGB 格式,但运行时还允许驱动程序使用 XRGB 格式指定图面(例如,D3DDDIFMT_X1R5G5B5)。
FORMATOP_SRGBWRITE (0x00100000L)
此格式的图面可以写入 sRGB格式的目标(即像素管道将输出中的数据划定为此格式)。
FORMATOP_NOALPHABLEND (0x00200000L)
此格式的图面不能与 alpha 混合一起使用。
FORMATOP_AUTOGENMIPMAP (0x004000000L)
可以自动生成具有此格式的 MIP 映射纹理的子级别。 要使驱动程序接收对其 GenerateMipSubLevels 函数的调用,必须公开此标志。
FORMATOP_VERTEXTEXTURE (0x008000000L)
顶点纹理采样器可以使用此格式的图面。 也就是说,只能将此格式的图面用作顶点纹理。
FORMATOP_NOTEXCOORDWRAPNORMIP (0x010000000L)
此格式的图面只能有条件地用于二维纹理的纹理映射,其尺寸不是 2。 有关详细信息,请参阅 D3DPRIMCAPS 参考页中D3DPTEXTURECAPS_POW2和D3DPTEXTURECAPS_NONPOW2CONDITIONAL的定义。
FORMATOP_PLANAR (0x020000000L)
此格式的图面是平面图面还是打包图面。 如果 Direct3D 运行时调用用户模式显示驱动程序的 锁 函数在表面具有平面格式,而表面丢失,并且无法实现间距乘数高度的典型计算,则必须分配缓冲区。 除了 DirectX 视频加速使用Microsoft格式(例如 YUV 格式)之外,大多数格式都打包了。
FORMATOP_OVERLAY (0x040000000L)
此格式的图面用于覆盖作。
FORMATOP_CAPTURE (0x080000000L)
如果设置了 D3DDDI_RESOURCEFLAGS2 结构的 VideoEncoder 成员,则可以将此格式的图面用作捕获缓冲区。
从 Windows 8 开始支持。
FORMATOP_VIDEO_ENCODER (0x100000000L)
如果设置了 D3DDDI_RESOURCEFLAGS2 结构的 VideoEncoder 成员,则可以将此格式的图面用作视频编码器输入资源。
从 Windows 8 开始支持。
FORMATOP_MULTIPLANE_OVERLAY (0x200000000L)
此格式的图面支持多平面覆盖。
从 Windows 8 开始支持。
[out] FlipMsTypes
用于全屏多重采样的 32 位掩码。
[out] BltMsTypes
用于窗口化多个采样的 32 位掩码。
[out] PrivateFormatBitCount
驱动程序专用的像素格式(即,不是由 D3DDDIFORMAT 枚举类型定义的标准像素格式之一)的像素格式的每像素位数。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | 在 Windows Vista 和更高版本的 Windows作系统中可用。 |
标头 | d3dumddi.h (包括 D3dumddi.h) |