DirectX Graphicsを使用するために「d3d9.h」をインクルードし、「dxguid.lib」と「d3d9.lib」をリンクします。また、Direct3DXを使用するには「d3dx9.h」をインクルードし、「d3dx9.lib」をリンクします。
#include <d3d9.h> #include <d3dx9.h>
Direct3Dオブジェクトの作成します。引数は固定で、成功するとIDirect3D9インターフェイスへのポインタを取得できます。
LPDIRECT3D9 g_lpD3D = NULL; g_lpD3D = Direct3DCreate9( D3D_SDK_VERSION );
描画を行うためにデバイスを作成します。ウインドウモードの場合、ピクセルフォーマットは「D3DFMT_UNKNOWN」か「IDirect3DDevice9::GetDisplayMode」で取得したピクセルフォーマットを指定します。
// パラメータを設定 D3DPRESENT_PARAMETERS param; ZeroMemory( ¶m, sizeof(param) ); param.BackBufferWidth = 320; // 解像度・幅 param.BackBufferHeight = 240; // 解像度・高さ param.BackBufferFormat = D3DFMT_X8R8G8B8; // ピクセルフォーマット param.BackBufferCount = 1; // バックバッファの数 param.SwapEffect = D3DSWAPEFFECT_DISCARD; // 表示する方法 param.Windowed = FALSE; // フルスクリーン //param.Windowed = TRUE; // ウインドウモード // デバイス作成 LPDIRECT3DDEVICE9 g_lpD3DDevice = NULL; g_lpD3D->CreateDevice( D3DADAPTER_DEFAULT, // プライマリディスプレイアダプタ D3DDEVTYPE_HAL, // ハードウェアを利用 g_hWnd, // ウインドウハンドル D3DCREATE_SOFTWARE_VERTEXPROCESSING, // ソフトウェアによる頂点処理 // D3DCREATE_HARDWARE_VERTEXPROCESSING, // ハードウェアによる頂点処理 ¶m, // パラメータ &g_lpD3DDevice );
描画を開始するには「IDirect3DDevice9::BeginScene」を呼び出し、描画が終了したら「IDirect3DDevice9::EndScene」を呼び出します。バックバッファを表示させるには「IDirect3DDevice9::Present」を呼び出します。また通常、描画を行うまえには「IDirect3DDevice9::Clear」を呼び出し、バックバッファを指定した色で塗りつぶしクリアします。
// 黒で塗りつぶす g_lpD3DDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,0,0), 1.0, 0 ); // 描画開始 g_lpD3DDevice->BeginScene(); // // 描画処理 // // 描画終了 g_lpD3DDevice->EndScene(); // 表示 g_lpD3DDevice->Present( NULL, NULL, NULL, NULL );
作成した各オブジェクトを解放します。
// 解放 /* #define RELEASE(p) { if(p){(p)->Release();p=NULL;} } */ RELEASE( g_lpD3DDevice ); RELEASE( g_lpD3D );