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 方法載入介面之前,不會配置介面的記憶體。 |
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 | 此表面存在於非本機顯示記憶體中,而不是 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 | 像素格式的亮度數據有效。 此旗標會在凸起圖表面的懸置亮度時使用;然後,圖元之亮度部分的位掩碼會由 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 位的遮罩。
規格需求
需求 | 值 |
---|---|
標頭 | ddkmapi.h (包含 Ddkmapi.h) |