G9lib補足
12/7にソースに関しての説明になります。
■必要なライブラリをリンクするように記述してます。
#pragma comment(lib, "d3d9.lib") #pragma comment(lib, "d3dx9.lib")
■ダイレクトXの初期化準備
ソースではWindowsモードで動作する事を前提にしています。
D3DDISPLAYMODE dmode; if (FAILED(pD3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &dmode))) { MessageBox(hwnd, L"ディスプレイモードの取得に失敗しました。",L"Base",MB_OK | MB_ICONSTOP); return FALSE; } ZeroMemory(&d3dppApp, sizeof(d3dppApp)); d3dppApp.Windowed = TRUE; // ウィンドウモード d3dppApp.SwapEffect = D3DSWAPEFFECT_DISCARD; // 垂直同期でフリップ d3dppApp.BackBufferCount = 1; d3dppApp.BackBufferFormat = dmode.Format; d3dppApp.EnableAutoDepthStencil = TRUE; d3dppApp.AutoDepthStencilFormat= D3DFMT_D16;
Windowsモードではなくフルスクリーンモードが良い場合は以下のような設定にしてください。
ZeroMemory(&d3dppApp,sizeof(d3dppApp)); d3dppApp.BackBufferWidth = 640; // 画面の解像度 d3dppApp.BackBufferHeight = 480; // d3dppApp.BackBufferFormat = D3DFMT_R5G6B5; d3dppApp.Windowed = FALSE; // フルスクリーンモード d3dppApp.BackBufferCount = 1; d3dppApp.SwapEffect = D3DSWAPEFFECT_DISCARD; d3dppApp.FullScreen_RefreshRateInHz = 60; d3dppApp.EnableAutoDepthStencil = TRUE; d3dppApp.AutoDepthStencilFormat= D3DFMT_D16;
■最後に開放する事をわすれないように
if (pD3D) { pD3D->Release(); pD3D = NULL; } if (pD3DDevice) { pD3DDevice->Release(); pD3DDevice = NULL; }
■描画の準備
描画関係のコマンドは、BeginSceneとEndSceneの間に記述してください。
pD3DDevice->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(0,0,0) , 1.0, 0); pD3DDevice->BeginScene(); : 描画設定 : pD3DDevice->EndScene(); pD3DDevice->Present(NULL, NULL, NULL, NULL);
本当は成功するかどうか確認をした方がよいです。(今回のソースは省いてますが)
pD3DDevice->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(0,0,0), 1.0, 0); if (SUCCEEDED(pD3DDevice->BeginScene())){ : 描画設定 : pD3DDevice->EndScene(); } pD3DDevice->Present(NULL, NULL, NULL, NULL);