之前研究過一段時間的OpenGL,可惜工作中暫時用不到,現在跑來研究一下DX,好歹工作中也可以用到一些了。
說說的我環境吧: Windows xp+sp2+DirectX9+VS2005
dx的下載安裝就此略過吧。
1.建立一空的項目,把DX目錄下的Include,Lib目錄添加到vs2005的配置目錄中;
2.引用dx標頭檔和lib庫
3.開始來點介面調用demo。
-------------------------
#.h
#include "stdafx.h"<br />#include <iostream><br />#include <d3d9.h></p><p>#pragma comment(lib,"d3d9.lib")</p><p>void test1(LPDIRECT3D9 d3d)<br />{<br />TCHAR szBuf[512] = {0x00};<br />// adapter display info<br />D3DDISPLAYMODE d3ddm;<br />if (FAILED(d3d->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &d3ddm)))<br />{<br />wsprintf(szBuf, "GetAdapterDisplayMode Failed");<br />::MessageBox(NULL, szBuf, "Tip", MB_OK);<br />return;<br />}<br />wsprintf(szBuf, "resolution=%d X %d/nrefresh rate=%d/n/D3DFORMAT=%d",<br />d3ddm.Width, d3ddm.Height, d3ddm.RefreshRate, d3ddm.Format);<br />::MessageBox(NULL, szBuf, "Tip", MB_OK);<br />}</p><p>void test2(LPDIRECT3D9 d3d)<br />{<br />TCHAR szBuf[512] = {0x00};<br />//depth buffer algorithm<br />if(D3D_OK != d3d->CheckDepthStencilMatch(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,D3DFMT_R5G6B5,D3DFMT_R5G6B5,D3DFMT_D16))<br />{<br />wsprintf(szBuf, "CheckDepthStencilMatch D3DADAPTER_DEFAULT failed");<br />MessageBox(NULL, szBuf,"Tip",MB_OK);<br />return ;<br />}<br />wsprintf(szBuf, "depth buffer OK");<br />MessageBox(NULL,szBuf,"Tip",MB_OK);<br />}</p><p>BOOL test()<br />{<br />LPDIRECT3D9 d3d = NULL;<br />TCHAR szBuf[512] = {0x00};</p><p>if(NULL == (d3d=::Direct3DCreate9(D3D_SDK_VERSION)))<br />{<br />wsprintf(szBuf, "Direct3DCreate9 Failed.");<br />::MessageBox(NULL,szBuf,"Tip",MB_OK);<br />return FALSE;<br />}<br />else<br />{<br />UINT unNum = d3d->GetAdapterCount();<br />wsprintf(szBuf, "Adapter Number=%d", unNum);<br />::MessageBox(NULL, szBuf, "Tip", MB_OK);<br />}</p><p>test1(d3d);<br />test2(d3d);</p><p>d3d->Release();</p><p>return TRUE;<br />};