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( )函數://提交 Ø所有圖形繪製結束後,調用此函數將後台緩衝區的資料複製到前台緩衝區。