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 为DD_DXAPI_LOCK操作写入 DxApi 函数的返回值的位置。 返回代码DD_OK表示成功。
dwSurfHeight
dwSurfWidth
指定图面的尺寸(以像素为单位)。
lSurfPitch
指定到下一行开头的距离(以字节为单位)。
lpSurface
指向表面内存。
SurfaceCaps
指示一组指定图面功能的标志。 此成员可以设置为以下一个或多个标志:
标志 | 含义 |
---|---|
DDSCAPS_3DDEVICE | 此图面可用于 3D 渲染。 应用程序可以使用此标志来确保只能呈现到特定堆的设备具有从正确的堆分配的屏幕外图面。 如果为堆设置了此标志,则不会从该堆分配图面。 |
DDSCAPS_ALLOCONLOAD | 在应用程序使用 IDirect3DDevice7::Load 方法加载 Surface 之前,不会分配 Surface 的内存。 |
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位。 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 表面。 |
DDSCAPS_NONLOCALVIDMEM | 此图面存在于非本地显示内存中,而不是真正的本地显示内存中。 如果指定了此标志,则还必须指定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 | 像素格式的亮度数据有效。 将此标志从凹凸贴图表面悬挂亮度时使用;然后,像素亮度部分的位掩码由 DDPIXELFORMAT 结构的 dwBumpLuminanceBitCount 成员指示。 |
DDPF_COMPRESSED | 图面接受指定格式的像素数据,并在写入操作期间对其进行压缩。 |
DDPF_FOURCC | FOURCC 代码有效。 |
DDPF_LUMINANCE | 像素格式的亮度数据有效。 此标志仅用于亮度或亮度加 alpha 表面;位深度随后由 DDPIXELFORMAT 结构的 dwLuminanceBitCount 成员指示。 |
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 位的掩码。
要求
要求 | 值 |
---|---|
Header | ddkmapi.h (包括 Ddkmapi.h) |
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈