調用DirectDraw接口和調DirectDraw7接口的不同點對比
調用DirectDraw接口步驟:
1. 包含鏈接庫ddraw.lib
2. 初始化窗口類型(全屏獨占時類型用popup)。
3. 在初始化窗口后初始化DirectDraw(使用函數DirectDrawCreate)
4. 創建DirectDraw實例指針lpDD。
5. lpDD->SetCooperativeLevel設置顯示全屏獨占還是窗體。
6. lpDD->SetDisplayMode(640,480,8)設置顯示模式。
7. DDSURFACEDESC ddsd的信息配置。
8. lpDD->CreateSurface創建主頁面。
9. lpDDSPrimary->GetAttachedSurface ( &ddscaps, &lpDDSBack
)提取后臺緩沖頁面。
10. 利用DirectDraw的函數對一些bmp處理,或者獲取hdc對頁面操作lpDDSBack->GetDC(&hdc)。
11. lpDDSPrimary->Flip(NULL,0) 一經Flip,兩個表面的指針互換。lpDDSPrimary指向后臺表面,
而lpDDSBack指向了原來的前臺主表面.(窗口模式不能進行換頁,要使用位塊傳送來將內容傳送到主頁面)。
12. 釋放所用資源。
調用DirectDraw7接口步驟:
1. 包含鏈接庫ddraw.lib、dxguid.lib
2. 初始化窗口類型(全屏獨占時類型用popup)。
3. 在初始化窗口后初始化DirectDraw7(使用函數DirectDrawCreateEx或者通過已創建的DirectDraw接口通過QueryInterface方法來獲得)
4. 創建DirectDraw7實例指針lpDD。
5. lpDD->SetCooperativeLevel設置顯示全屏獨占還是窗體。
6. lpDD->SetDisplayMode(640,480,8,0,0)設置顯示模式(這里比DirectDraw接口多了兩個參數)最后兩個參數描述分別是:
dwRefreshRate
Refresh rate of the new mode. Set this value to 0 to request the default
refresh rate for the driver.
大意是:用于設置顯示時的刷新頻率,(就是65MHZ、75MHZ、85MHZ),如果設為0使用當前默認設置。
dwFlags
Flags describing additional options. Currently, the only valid flag is
DDSDM_STANDARDVGAMODE, which causes the method to set Mode 13 instead of Mode X
320x200x8 mode. If you are setting another resolution, bit depth, or a Mode X
mode, do not use this flag and set the parameter to 0
7. DDSURFACEDESC2
ddsd的信息配置(聲明完頁面描述后,應該立即用ZeroMemory函數使對象的值為0,否則不能成功創建頁面)
8. lpDD->CreateSurface創建主頁面。
9. lpDDSPrimary->GetAttachedSurface ( &ddscaps, &lpDDSBack
)提取后臺緩沖頁面。
10. 利用DirectDraw的函數對一些bmp處理,或者獲取hdc對頁面操作lpDDSBack->GetDC(&hdc)。
11. lpDDSPrimary->Flip(NULL,0) 一經Flip,兩個表面的指針互換。lpDDSPrimary指向后臺表面,
而lpDDSBack指向了原來的前臺主表面.(窗口模式不能進行換頁,要使用位塊傳送來將內容傳送到主頁面)。