天天看點

建立一個directX程式的步驟

1.下載下傳directX9.0c安裝包和directX sdk安裝包,都安裝好了,然後要設定vc++的工作目錄,加入include和lib路徑

2.下面開始寫程式,

首先引入頭檔案#include <d3dx9.h>然後注冊wnd視窗,最後把視窗hwnd和directx操作函數關聯.

這裡介紹幾個結構體:

HWND hWnd;

LPDIRECT3DDEVICE9 pDev3D9;//directX裝置接口指針

 LPDIRECT3D9 pd3d;//directX對象

 D3DDISPLAYMODE d3ddm;//顯示卡資訊描述

 D3DPRESENT_PARAMETERS d3dpp;//directX裝置對象

然後在注冊視窗完成後,加入directx的初始化工作:

pd3d = Direct3DCreate9(D3D_SDK_VERSION)//函數建立一個directx對象

pd3d->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &d3ddm)//函數得到目前顯示卡的相關資訊

填充D3DPRESENT_PARAMETERS的結構體

 ::ZeroMemory(&d3dpp, sizeof(d3dpp));

 d3dpp.BackBufferWidth            = 640;

 d3dpp.BackBufferHeight           = 450;

 d3dpp.BackBufferFormat           = d3ddm.Format;

 d3dpp.BackBufferCount            = 1;

 d3dpp.MultiSampleType            = D3DMULTISAMPLE_NONE;

 d3dpp.MultiSampleQuality         = 0;

 d3dpp.SwapEffect                 = D3DSWAPEFFECT_DISCARD;

 d3dpp.hDeviceWindow              = hWnd;

 d3dpp.Windowed                   = true;

 // d3dpp.EnableAutoDepthStencil     = true;

 // d3dpp.AutoDepthStencilFormat     = D3DFMT_D24S8;

 d3dpp.Flags                      = 0;

 d3dpp.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT;

 d3dpp.PresentationInterval       = D3DPRESENT_INTERVAL_IMMEDIATE;

pd3d->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, D3DCREATE_HARDWARE_VERTEXPROCESSING, &d3dpp, &pDev3D9)//建立directx裝置對象,所有具體操作都是由

directx的裝置對象完成的,directx的對象隻是一個過度,并不參與相關的設定.

到這裡就完成了directx的初始化工作,下面就可以調用directx的api去實作相關的功能了.

3.跟住在某事件響應操作

   pDev3D9->Clear(0, 0, D3DCLEAR_TARGET, D3DCOLOR_ARGB(0,0, 255, 255), 1.0f, 0);

   pDev3D9->Present(NULL, NULL, NULL, NULL);

注意:

• IDirect3DDevice9::Clear( )函數: Ø在繪制圖形前用此函數初始化視口顔色儲存區、深度緩存區或模闆緩 存區。 •IDirect3DDevice9::BeginScene( )和 IDirect3DDevice9::EndScene( )函數 Ø開始圖形繪制前,必須調用BeginScene( )函數,通知Direct3D裝置渲染 開始;//不可嵌套 Ø 渲染程式完成後,必須調用EndScene( )函數結束渲染; Ø這兩個函數必須成對出現,并且不允許嵌套和交錯;任何Direct3D渲 染函數都必須在這兩個函數之間出現。 • IDirect3DDevice9::Present( )函數://送出 Ø所有圖形繪制結束後,調用此函數将背景緩存區的資料複 制到前台緩存區。

繼續閱讀