初始化D3D:
一、獲得一個IDirect3D9接口指針。這個接口指針用於獲得物理設備的信息和創建一個IDirect3DDevice9接口
IDirect3D9 * Direct3DCreate9(
UINT SDKVersion // 總是D3D_SDK_VERSION
);
// Direct3DCreate9(MSDN)
二、檢查設備的技術特性(D3DCAPS9),搞清楚主顯示卡是否支持硬件頂點處理。我們需要知道假如它能支持,我們就能創建IDirect3DDevice9接口
HRESULT GetDeviceCaps(
UINT Adapter, // 指定要獲得哪個顯示適配器的特性
D3DDEVTYPE DeviceType, // 指定設備類型(硬件設備(D3DDEVTYPE_HAL),軟件設備(D3DDEVTYPE_REF))
D3DCAPS9 * pCaps // 返回一個已初始化的D3DCAPS9結構
);
// IDirect3D9::GetDeviceCaps(MSDN)
三、初始化一個D3DPRESENT_PARAMETERS結構實例,它允許我們指定將要創建的IDirect3DDevice9接口的特性
typedef struct D3DPRESENT_PARAMETERS {
UINT BackBufferWidth;
UINT BackBufferHeight;
D3DFORMAT BackBufferFormat;
UINT BackBufferCount;
D3DMULTISAMPLE_TYPE MultiSampleType;
DWORD MultiSampleQuality;
D3DSWAPEFFECT SwapEffect;
HWND hDeviceWindow;
BOOL Windowed;
BOOL EnableAutoDepthStencil;
D3DFORMAT AutoDepthStencilFormat;
DWORD Flags;
UINT FullScreen_RefreshRateInHz;
UINT PresentationInterval;
} D3DPRESENT_PARAMETERS, *LPD3DPRESENT_PARAMETERS;
// D3DPRESENT_PARAMETERS(MSDN)
四、創建基於D3DPRESENT_PARAMETERS結構實例的IDirect3DDevice9對象,它代表我們顯示3D圖形的物理設備的C++對象
HRESULT CreateDevice(
UINT Adapter, // 指定對象要表示的物理顯示設備
D3DDEVTYPE DeviceType, // 設備類型
HWND hFocusWindow, // 與設備相關的窗口句柄
DWORD BehaviorFlags, // 設定爲D3DCREATE_SOFTWARE_VERTEXPROCESSING或者D3DCREATE_HARDWARE_VERTEXPROCESSING
D3DPRESENT_PARAMETERS * pPresentationParameters, // 指定一個初始化好的D3DPRESENT_PARAMETERS實例
IDirect3DDevice9 ** ppReturnedDeviceInterface // 返回創建的設備
); // IDirect3D9::CreateDevice(MSDN)