DDSCAPS 结构 (ddraw.h)

DDSCAPS 结构定义 Microsoft DirectDraw Surface 对象的功能。

语法

typedef struct _DDSCAPS {
  DWORD dwCaps;
} DDSCAPS;

成员

dwCaps

指示一组指定图面功能的标志。 此成员是以下任意标志的按位 OR:

标志 含义

DDSCAPS_3DDEVICE

此图面可用于 3D 渲染。 应用程序可以使用此标志来确保只能呈现到特定堆的设备具有从正确的堆分配的屏幕外图面。 如果为堆设置了此标志,则不会从该堆分配图面。

DDSCAPS_ALLOCONLOAD

在应用程序使用 IDirect3DTexture::Load 方法加载 Surface 之前,不会分配 Surface 的内存。

DDSCAPS_ALPHA

此图面仅包含 alpha 信息。

DDSCAPS_BACKBUFFER

此表面是表面翻转结构的后台缓冲区。 通常,使用 DDSCAPS_FLIP 标志时,此功能由应用程序的 CreateSurface 方法设置。 只有紧邻DDSCAPS_FRONTBUFFER图面的图面才设置了此功能。 其他图面通过存在DDSCAPS_FLIP标志、其附件顺序以及缺少DDSCAPS_FRONTBUFFER和DDSCAPS_BACKBUFFER功能来标识为后台缓冲区。 如果将此功能发送到应用程序的 CreateSurface 方法,则会创建独立的后台缓冲区。 调用此方法后,可以将此图面附加到前缓冲区和/或另一个后部缓冲区,以形成翻转表面结构。 有关详细信息,请参阅 DirectX SDK 中的 AddAttachedSurface 方法。 DirectDraw 支持翻转结构中的任意数量的图面。

DDSCAPS_COMPLEX

正在描述一个复杂的表面。 复杂图面会导致创建多个图面。 附加表面附加到根图面。 只能通过销毁根来销毁复杂结构。

DDSCAPS_EXECUTEBUFFER

图面是一个执行缓冲区,它是保存 Microsoft Direct3D 显示列表的系统或视频内存的线性区块。 驱动程序报告此功能位,以指示它可以在视频内存中创建执行缓冲区。 如果 Direct3D 运行时检测到此位,它可以从驱动程序请求执行缓冲区。 应用程序无法检测此功能位。

DDSCAPS_FLIP

此图面是表面翻转结构的一部分。 将此功能传递给应用程序的 CreateSurface 方法时,将创建一个前缓冲区和一个或多个后台缓冲区。 DirectDraw 设置前缓冲区图面上的DDSCAPS_FRONTBUFFER位,在与前缓冲区图面相邻的图面上设置DDSCAPS_BACKBUFFER位。 DDSURFACEDESC 结构的 dwBackBufferCount 成员必须至少设置为 1,方法调用才能成功。 使用 CreateSurface 方法创建多个图面时,必须始终设置DDSCAPS_COMPLEX功能。

DDSCAPS_FRONTBUFFER

此图面是表面翻转结构的前缓冲区。 设置DDSCAPS_FLIP功能时,通常由应用程序的 CreateSurface 方法设置此标志。 如果将此功能发送到 CreateSurface 方法,则会创建独立的前缓冲区。 此图面没有DDSCAPS_FLIP功能。 可以使用应用程序的 AddAttachedSurface 方法将其附加到其他后台缓冲区以形成翻转结构。

DDSCAPS_HWCODEC

此图面应能够由硬件解压缩到它的流。

DDSCAPS_LIVEVIDEO

此图面应能够接收实时视频。

DDSCAPS_LOCALVIDMEM

此图面存在于 true 本地显示内存中,而不是非本地显示内存中。 如果指定了此标志,则还必须指定DDSCAPS_VIDEOMEMORY。 此标志不能与 DDSCAPS_NONLOCALVIDMEM 标志一起使用。

DDSCAPS_MIPMAP

此图面是 mipmap 的一个级别。 此图面连接到其他DDSCAPS_MIPMAP图以形成 mipmap。 这可以通过使用应用程序的 AddAttachedSurface 方法创建多个图面并附加它们来显式完成,也可以通过应用程序的 CreateSurface 方法隐式实现。 如果设置了此功能,还必须设置DDSCAPS_TEXTURE。

DDSCAPS_MODEX

此图面是 320x200 或 320x240 Mode X 表面。 如果此功能位由 Microsoft Windows 2000 或更高版本驱动程序设置,则 DirectDraw 处于禁用状态。

DDSCAPS_NONLOCALVIDMEM

此图面存在于非本地显示内存中,而不是真正的本地显示内存中。 如果指定了此标志,则还必须指定DDSCAPS_VIDEOMEMORY标志。 这不能与 DDSCAPS_LOCALVIDMEM 标志一起使用。

DDSCAPS_OFFSCREENPLAIN

此表面是任何非屏幕外表面,不是覆盖、纹理、z 缓冲区、前缓冲区、后缓冲区或 alpha 表面。 它用于识别普通表面。

DDSCAPS_OVERLAY

此图面是一个覆盖层。 此覆盖层的可见性取决于它当前是否叠加到主表面。 DDSCAPS_VISIBLE可用于确定它目前是否正在叠加。

DDSCAPS_OPTIMIZED

此标志当前未实现。

DDSCAPS_OWNDC

此图面将具有长时间 (DC) 关联的设备上下文。 如果此功能位由 Windows 2000 或更高版本驱动程序设置,则 DirectDraw 将被禁用。

DDSCAPS_PALETTE

此设备驱动程序允许创建唯一 DirectDrawPalette 对象并将其附加到此图面。

DDSCAPS_PRIMARYSURFACE

此图面是主图面。 它表示目前对用户可见的内容。

DDSCAPS_PRIMARYSURFACELEFT

此表面是左眼的主表面。 它表示用户左眼此时可见的内容。 创建此图面时,具有DDSCAPS_PRIMARYSURFACE功能的表面表示用户右眼看到的内容。

DDSCAPS_STANDARDVGAMODE

此图面是标准 VGA 模式图面,而不是 ModeX 表面。 此标志不能与 DDSCAPS_MODEX 标志结合使用。

DDSCAPS_SYSTEMMEMORY

此表面内存是从系统内存中分配的。 如果此功能位由 Windows 2000 或更高版本驱动程序设置,则禁用 DirectDraw。

DDSCAPS_TEXTURE

此表面可用作 3D 纹理。 它并不指示表面是否用于该目的。

DDSCAPS_VIDEOMEMORY

此图面存在于显示内存中。

DDSCAPS_VIDEOPORT

此图面可以从 视频端口扩展 (VPE) 对象接收数据。

DDSCAPS_VISIBLE

对此图面所做的更改立即可见。 它始终设置为主表面,以及覆盖时覆盖层和纹理贴图(纹理贴图)。

DDSCAPS_WRITEONLY

仅允许对图面进行写入访问。 从图面读取访问可能会 (GPF) 生成常规保护故障,但此图面的读取结果没有意义。 如果此功能位由 Windows 2000 或更高版本驱动程序设置,则禁用 DirectDraw。

DDSCAPS_ZBUFFER

此图面是 z 缓冲区。 它包含位深度信息,用于确定哪些像素可见,哪些像素被遮盖。 z 缓冲区包含无法显示的信息。

注解

驱动程序使用此结构来报告驱动程序支持的图面类型。 它还由应用程序填充,以指定要创建的图面的类型。

要求

要求
Header ddraw.h