DDSCAPS 结构 (ddraw.h)

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

语法

typedef struct _DDSCAPS {
  DWORD dwCaps;
} DDSCAPS;

成员

dwCaps

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

标志 含义

DDSCAPS_3DDEVICE

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

DDSCAPS_ALLOCONLOAD

在使用 IDirect3DTexture::Load 方法加载图面之前,不会分配图面的内存。

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 模式 X 图面。 如果 Microsoft Windows 2000 或更高版本驱动程序设置了此功能位,则禁用 DirectDraw。

DDSCAPS_NONLOCALVIDMEM

此图面存在于非局部显示内存中,而不是 true 本地显示内存。 如果指定了此标志,则还必须指定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 缓冲区包含无法显示的信息。

注解

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

要求

   
标头 ddraw.h