建立一個directX程式的步驟

來源:互聯網
上載者:User

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.