DDLOCKOUT 结构 (ddkmapi.h)
DDLOCKOUT 结构包含图面的说明。
语法
typedef struct _DDLOCKOUT {
DWORD ddRVal;
DWORD dwSurfHeight;
DWORD dwSurfWidth;
LONG lSurfPitch;
PVOID lpSurface;
DWORD SurfaceCaps;
DWORD dwFormatFlags;
DWORD dwFormatFourCC;
DWORD dwFormatBitCount;
union {
DWORD dwRBitMask;
DWORD dwYBitMask;
};
union {
DWORD dwGBitMask;
DWORD dwUBitMask;
};
union {
DWORD dwBBitMask;
DWORD dwVBitMask;
};
} DDLOCKOUT, *LPDDLOCKOUT;
成员
ddRVal
指定 Microsoft DirectDraw 写入 DxApi 函数的返回值的位置,以便执行 DD_DXAPI_LOCK 操作。 DD_OK的返回代码指示成功。
dwSurfHeight
dwSurfWidth
指定图面的尺寸(以像素为单位)。
lSurfPitch
指定下一行开始的距离(以字节为单位)。
lpSurface
指向图面内存。
SurfaceCaps
指示一组标志,用于指定图面的功能。 此成员可以设置为以下一个或多个标志:
旗 | 意义 |
---|---|
DDSCAPS_3DDEVICE | 此图面可用于 3D 渲染。 应用程序可以使用此标志来确保只能呈现到特定堆的设备具有从正确的堆分配的屏幕外表面。 如果为堆设置了此标志,则不会从该堆分配图面。 |
DDSCAPS_ALLOCONLOAD | 在使用 IDirect3DDevice7::Load 方法加载图面之前,不会分配图面的内存。 |
DDSCAPS_ALPHA | 此图面包含 alpha 信息。 必须查询像素格式,以确定此图面是否仅包含 alpha 信息,还是与像素颜色数据交错的 alpha 信息(如 RGBA 或 YUVA)。 |
DDSCAPS_BACKBUFFER | 此图面是表面翻转结构的后缓冲区。 通常,使用DDSCAPS_FLIP标志时,应用程序的 CreateSurface 方法设置此功能。 只有紧邻DDSCAPS_FRONTBUFFER图面之前的图面才设置了此功能。 其他图面通过存在DDSCAPS_FLIP标志、附件顺序以及缺少DDSCAPS_FRONTBUFFER和DDSCAPS_BACKBUFFER功能来标识为后缓冲区。 如果此功能发送到应用程序的 CreateSurface 方法,则会创建独立的后台缓冲区。 调用此方法后,此图面可以附加到前缓冲区、另一个后退缓冲区或两者都形成翻转表面结构。 有关详细信息,请参阅 DirectX SDK 文档中的 AddAttachedSurface 方法。 DirectDraw 支持翻转结构中的任意数量的图面。 |
DDSCAPS_COMPLEX | 正在描述复杂的图面。 复杂的图面会导致创建多个图面。 其他图面附加到根图面。 复杂结构只能通过销毁根来销毁。 |
DDSCAPS_FLIP | 此图面是表面翻转结构的一部分。 当此功能传递到应用程序的 CreateSurface 方法时,将创建一个前缓冲区和一个或多个后退缓冲区。 DirectDraw 设置前缓冲区图面上的DDSCAPS_FRONTBUFFER位,以及与前缓冲区图面相邻的图面上的DDSCAPS_BACKBUFFER位。 dwBackBufferCountDDSURFACEDESC 结构的成员必须设置为至少 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 图面。 |
DDSCAPS_NONLOCALVIDMEM | 此图面存在于非本地显示内存中,而不是 true 本地显示内存。 如果指定了此标志,则必须同时指定DDSCAPS_VIDEOMEMORY标志。 这不能与DDSCAPS_LOCALVIDMEM标志一起使用。 |
DDSCAPS_OFFSCREENPLAIN | 此图面是非覆盖、纹理、z 缓冲区、前缓冲区、后缓冲区或 alpha 表面的任何屏幕外表面。 它用于标识纯表面。 |
DDSCAPS_OPTIMIZED | 当前未实现。 |
DDSCAPS_OVERLAY | 此图面是覆盖层。 它可能不直接可见,具体取决于它当前是否叠加在主图面上。 DDSCAPS_VISIBLE可用于确定它目前是否被覆盖。 |
DDSCAPS_OWNDC | 此图面将具有长时间的设备上下文(DC)关联。 |
DDSCAPS_PALETTE | 此设备驱动程序允许创建并附加到此图面的唯一 DirectDrawPalette 对象。 |
DDSCAPS_PRIMARYSURFACE | 图面是主图面。 它表示用户目前可见的内容。 |
DDSCAPS_PRIMARYSURFACELEFT | 此表面是左眼的主表面。 它表示用户目前左眼可见的内容。 创建此图面时,具有DDSCAPS_PRIMARYSURFACE功能的图面表示用户右眼看到的内容。 |
DDSCAPS_STANDARDVGAMODE | 此图面是标准的 VGA 模式图面,而不是 ModeX 图面。 此标志不能与DDSCAPS_MODEX标志结合使用。 |
DDSCAPS_SYSTEMMEMORY | 此图面内存是在系统内存中分配的。 |
DDSCAPS_TEXTURE | 此图面可用作 3D 纹理。 它不指示表面是否用于该目的。 |
DDSCAPS_VIDEOMEMORY | 此图面存在于显示内存中。 |
DDSCAPS_VIDEOPORT | 此图面可以从硬件视频端口接收数据。 |
DDSCAPS_VISIBLE | 对此图面所做的更改立即可见。 它始终为主图面设置,以及覆盖层,而覆盖层和纹理贴图在纹理化时。 |
DDSCAPS_WRITEONLY | 仅允许对图面进行写入访问。 从图面读取访问可能会生成常规保护故障(GPF),但此图面的读取结果没有意义。 |
DDSCAPS_ZBUFFER | 此图面是 z 缓冲区。 z 缓冲区包含无法显示的信息。 而是包含用于确定哪些像素可见和遮盖的位深度信息。 |
dwFormatFlags
指定一组可选控件标志。 此成员可以设置为以下标志的组合:
旗 | 意义 |
---|---|
DDPF_ALPHA | 像素格式描述仅限 alpha 的图面。 |
DDPF_ALPHAPIXELS | 图面具有像素格式的 alpha 通道信息。 |
DDPF_ALPHAPREMULT | 保留供系统使用。 |
DDPF_BUMPDUDV | 像素格式的凸起地图 dUdV 数据有效。 |
DDPF_BUMPLUMINANCE | 像素格式的亮度数据有效。 在凸起地图图面上悬挂亮度时使用此标志;然后,dwBumpLuminanceBitCountDDPIXELFORMAT 结构的成员指示像素的亮度部分的位掩码。 |
DDPF_COMPRESSED | 图面接受采用指定格式的像素数据,并在写入操作期间对其进行压缩。 |
DDPF_FOURCC | FOURCC 代码有效。 |
DDPF_LUMINANCE | 像素格式的亮度数据有效。 此标志仅用于亮度或亮度加上 alpha 图面;然后,dwLuminanceBitCount DDPIXELFORMAT 结构的成员指示位深度。 |
DDPF_PALETTEINDEXED1 | 图面已编制 1 位颜色索引。 |
DDPF_PALETTEINDEXED2 | 图面已编制 2 位颜色索引。 |
DDPF_PALETTEINDEXED4 | 图面已编制 4 位颜色索引。 |
DDPF_PALETTEINDEXED8 | 图面已编制 8 位颜色索引。 |
DDPF_PALETTEINDEXEDTO8 | 图面为 1 位、2 位或 4 位颜色,索引为 8 位调色板。 |
DDPF_RGB | 像素格式结构的 RGB 数据有效。 |
DDPF_RGBTOYUV | 图面接受 RGB 数据,并在写入操作期间将其转换为 YUV 数据。 要写入的数据的格式包含在像素格式结构中。 设置DDPF_RGB标志。 |
DDPF_STENCILBUFFER | 图面包含模具信息以及 Z 信息。 |
DDPF_YUV | 像素格式结构中的 YUV 数据有效。 |
DDPF_ZBUFFER | 像素格式描述仅限 z 缓冲区的图面。 |
DDPF_ZPIXELS | 图面采用 RGBZ 格式。 |
dwFormatFourCC
指定 FOURCC 代码。 有关 FOURCC 代码的详细信息,请参阅 DirectX SDK 文档。
dwFormatBitCount
指定 RGB 或 YUV 数据的每个像素(4、8、16、24 或 32)的位数。
dwRBitMask
指定红色位的掩码。
dwYBitMask
指定 Y 位的掩码。
dwGBitMask
指定绿色位的掩码。
dwUBitMask
指定 U 位的掩码。
dwBBitMask
指定蓝色位的掩码。
dwVBitMask
指定 V 位的掩码。
要求
要求 | 价值 |
---|---|
标头 | ddkmapi.h (包括 Ddkmapi.h) |