FORMATOP 结构 (d3dumddi.h)

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 (0x00000001L)

指定像素格式的图面可用作 MIP 映射纹理。

FORMATOP_VOLUMETEXTURE (0x00000002L)

此格式的图面可用作体积纹理。 请注意,此标志独立于FORMATOP_TEXTURE。 因此,像素格式可用于体积纹理,而不适用于传统的 MIP 映射纹理。

FORMATOP_CUBETEXTURE (0x00000004L)

此格式的图面可用作立方环境贴图纹理。 请注意,此标志独立于FORMATOP_TEXTURE。 因此,像素格式可用于三次环境贴图纹理,而不适用于传统的 MIP 映射纹理。

FORMATOP_OFFSCREEN_RENDERTARGET (0x00000008L)

如果当前显示模式的像素格式已使用 FORMATOP_DISPLAYMODE 和 FORMATOP_3DACCELERATION 报告,则无论显示模式的像素格式如何,此格式的图面都可以用作屏幕外呈现目标。 如果当前显示模式的像素格式未设置这些标志,则即使呈现目标在屏幕外,此模式下也无三维加速可用。 FORMATOP_OFFSCREEN_RENDERTARGET标志可以与FORMATOP_TEXTURE组合,以指示设备可以呈现为指定像素格式的纹理。

FORMATOP_OFFSCREEN_RENDERTARGET标志还表示FORMATOP_SAME_FORMAT_RENDERTARGET和FORMATOP_SAME_FORMAT_UP_TO_ALPHA_RENDERTARGET标志。

FORMATOP_SAME_FORMAT_RENDERTARGET (0x00000010L)

此格式的图面可用作呈现目标,但仅当图面的像素格式与当前显示模式的像素格式匹配时。 此标志不仅适用于屏幕外呈现目标,还可以在显示模式的像素格式上指定,以指示呈现目标功能。 此标志可以与FORMATOP_TEXTURE组合,以指示设备可以呈现为指定像素格式的纹理。

FORMATOP_SAME_FORMAT_RENDERTARGET标志还表示FORMATOP_SAME_FORMAT_UP_TO_ALPHA_RENDERTARGET标志。

FORMATOP_ZSTENCIL (0x00000040L)

此格式的图面可用作 Z/模具缓冲区,但前提是 Z/模具表面的深度与深度缓冲区所附加到的呈现目标的颜色深度匹配。 在决定 Z/模具与颜色缓冲区深度之间的匹配时,请使用像素步幅。

FORMATOP_ZSTENCIL_WITH_ARBITRARY_COLOR_DEPTH (0x00000080L)

此格式的图面可用作 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 (0x00000800L)

在具有此像素格式的显示模式下,图形加速器可以支持某种级别的 Microsoft Direct3D 加速,并且驱动程序可以在此模式下创建上下文, (某些呈现目标格式) 。 仅当通过指定FORMATOP_DISPLAYMODE) (报表显示模式格式时,才能使用此标志。 不应使用此标志来报告屏幕外呈现目标格式。

FORMATOP_PIXELSIZE (0x00001000L)

驱动程序填充 PrivateFormatBitCount 成员中格式的每像素位数。

如果驱动程序要求托管图面和纹理使用专用格式 (可由驱动程序处理但不能由 Direct3D 运行时) 本机处理的格式,则驱动程序必须在 PrivateFormatBitCount 中指定FORMATOP_PIXELSIZE和像素大小。

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 (0x00400000L)

可以自动生成采用此格式的 MIP 映射纹理的子级别。 若要使驱动程序接收对其 GenerateMipSubLevels 函数的 调用,必须公开此标志。

FORMATOP_VERTEXTEXTURE (0x00800000L)

顶点纹理采样器可以使用此格式的表面。 也就是说,只有此格式的表面才能用作顶点纹理。

FORMATOP_NOTEXCOORDWRAPNORMIP (0x01000000L)

此格式的图面只能有条件地用于尺寸不为 2 的二维纹理的纹理映射。 有关详细信息,请参阅D3DPRIMCAPS参考页中 D3DPTEXTURECAPS_POW2和D3DPTEXTURECAPS_NONPOW2CONDITIONAL 的定义。

FORMATOP_PLANAR (0x02000000L)

此格式的图面是平面的,而不是打包的。 如果 Direct3D 运行时在具有平面格式的图面上调用用户模式显示驱动程序的 Lock 函数,而表面丢失并且无法进行俯仰乘数高度的典型计算,则 Direct3D 运行时必须分配缓冲区。 大多数格式打包,Microsoft DirectX 视频加速使用 (例如 YUV 格式) 。

FORMATOP_OVERLAY (0x04000000L)

此格式的图面用于覆盖操作。

FORMATOP_CAPTURE (0x08000000L)

如果设置了 D3DDDI_RESOURCEFLAGS2 结构的 VideoEncoder 成员,则此格式的图面可用作捕获缓冲区。

支持从Windows 8开始。

FORMATOP_VIDEO_ENCODER (0x10000000L)

如果设置了 D3DDDI_RESOURCEFLAGS2 结构的 VideoEncoder 成员,则此格式的图面可用作视频编码器输入资源。

支持从Windows 8开始。

FORMATOP_MULTIPLANE_OVERLAY (0x20000000L)

此格式的图面支持多平面覆盖。

支持从Windows 8开始。

[out] FlipMsTypes

用于全屏多重采样的 32 位掩码。

[out] BltMsTypes

用于窗口化多重采样的 32 位掩码。

[out] PrivateFormatBitCount

驱动程序专用的像素格式的每像素位数 (,即,不是 D3DDDIFORMAT 枚举类型定义的标准像素格式之一) 。

要求

要求
最低受支持的客户端 在 Windows Vista 和更高版本的 Windows 操作系统中可用。
标头 d3dumddi.h (包括 D3dumddi.h)

另请参阅

D3DDDIARG_GETCAPS

D3DDDICAPS_TYPE

D3DDDIFORMAT

D3DDDI_RESOURCEFLAGS2

GetCaps