「C言語/C++/dx9sample1」の編集履歴(バックアップ)一覧はこちら

C言語/C++/dx9sample1 - (2020/06/30 (火) 11:12:38) の1つ前との変更点

追加された行は緑色になります。

削除された行は赤色になります。

|開発環境|Microsoft Visual Studio Community 2019| |実行環境|Microsoft Windows 10 Home (64bit)| |プロジェクト テンプレート|C++ 空のプロジェクト| |プロジェクト名|dx9sample1| #image(AATrain1.png) 参考 [[座標変換済み頂点で2D板ポリゴンを描画:サンプルプログラム>http://marupeke296.com/DXGSmp_No2_2DPoly.html]] プロジェクト構成プロパティ リンカ―/システム/サブシステム Windows (/SUBSYSTEM:WINDOWS) dx9sample1.cpp #highlight(c++){{ #pragma comment(lib, "d3d9") #include <Windows.h> #include <d3d9.h> #define SAFE_RELEASE(p) if(p){p->Release();p=NULL;} struct CUSTOM_VTX { float x, y, z, w; DWORD color; }; #define CUSTOM_FVF (D3DFVF_XYZRHW | D3DFVF_DIFFUSE) // 外部変数 LPDIRECT3D9 pD3D; LPDIRECT3DDEVICE9 pD3DDev; // 関数プロトタイプ宣言 LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); HWND InitWindow(HINSTANCE hInstance, int nCmdShow); HRESULT InitD3D(HWND hWnd); void Cleanup(); int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE, LPWSTR, int nCmdShow) { HWND hWnd = InitWindow(hInstance, nCmdShow); if (!hWnd) return -1; HRESULT hr = InitD3D(hWnd); if (FAILED(hr)) { Cleanup(); return -1; } ShowWindow(hWnd, nCmdShow); CUSTOM_VTX vtx[] = { { 200, 200, 0, 1, 0xff0000ff }, { 200, 0, 0, 1, 0xff00ff00 }, { 400, 200, 0, 1, 0xffff0000 }, }; MSG msg = { 0 }; while (msg.message != WM_QUIT) { if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { TranslateMessage(&msg); DispatchMessage(&msg); } else { pD3DDev->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 0, 0), 1, 0); pD3DDev->BeginScene(); pD3DDev->SetFVF(CUSTOM_FVF); pD3DDev->DrawPrimitiveUP(D3DPT_TRIANGLELIST, 1, vtx, sizeof CUSTOM_VTX); pD3DDev->EndScene(); pD3DDev->Present(NULL, NULL, NULL, NULL); } } Cleanup(); return msg.wParam; } LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_DESTROY: PostQuitMessage(0); return 0; } return DefWindowProc(hWnd, msg, wParam, lParam); } HWND InitWindow(HINSTANCE hInstance, int nCmdShow) { WNDCLASSEX wc = { sizeof WNDCLASSEX }; wc.style = CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = WndProc; wc.hInstance = hInstance; wc.hbrBackground = HBRUSH(COLOR_WINDOW + 1); wc.lpszClassName = L"dx9sample1"; if (!RegisterClassEx(&wc)) return NULL; DWORD deStyle = WS_OVERLAPPEDWINDOW ^ WS_MAXIMIZEBOX ^ WS_THICKFRAME; RECT rc = { 0, 0, 400, 400 }; AdjustWindowRect(&rc, deStyle, FALSE); HWND hWnd = CreateWindow( wc.lpszClassName, L"dx9sample1", deStyle, CW_USEDEFAULT, 0, rc.right - rc.left, rc.bottom - rc.top, NULL, NULL, hInstance, NULL); return hWnd; } HRESULT InitD3D(HWND hWnd) { HRESULT hr; pD3D = Direct3DCreate9(D3D_SDK_VERSION); if (!pD3D) return E_FAIL; D3DPRESENT_PARAMETERS d3dpp = { 0 }; d3dpp.BackBufferFormat = D3DFMT_UNKNOWN; d3dpp.MultiSampleType = D3DMULTISAMPLE_NONE; d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; d3dpp.Windowed = TRUE; d3dpp.AutoDepthStencilFormat = D3DFMT_UNKNOWN; d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT; hr = pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, D3DCREATE_HARDWARE_VERTEXPROCESSING, &d3dpp, &pD3DDev); if (FAILED(hr)) return hr; return S_OK; } void Cleanup() { SAFE_RELEASE(pD3DDev); SAFE_RELEASE(pD3D); } }}
|開発環境|Microsoft Visual Studio Community 2019| |実行環境|Microsoft Windows 10 Home (64bit)| |プロジェクト テンプレート|C++ 空のプロジェクト| |プロジェクト名|dx9sample1| #image(dx9sample1.jpg) 参考 [[座標変換済み頂点で2D板ポリゴンを描画:サンプルプログラム>http://marupeke296.com/DXGSmp_No2_2DPoly.html]] プロジェクト構成プロパティ リンカ―/システム/サブシステム Windows (/SUBSYSTEM:WINDOWS) dx9sample1.cpp #highlight(c++){{ #pragma comment(lib, "d3d9") #include <Windows.h> #include <d3d9.h> #define SAFE_RELEASE(p) if(p){p->Release();p=NULL;} struct CUSTOM_VTX { float x, y, z, w; DWORD color; }; #define CUSTOM_FVF (D3DFVF_XYZRHW | D3DFVF_DIFFUSE) // 外部変数 LPDIRECT3D9 pD3D; LPDIRECT3DDEVICE9 pD3DDev; // 関数プロトタイプ宣言 LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); HWND InitWindow(HINSTANCE hInstance, int nCmdShow); HRESULT InitD3D(HWND hWnd); void Cleanup(); int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE, LPWSTR, int nCmdShow) { HWND hWnd = InitWindow(hInstance, nCmdShow); if (!hWnd) return -1; HRESULT hr = InitD3D(hWnd); if (FAILED(hr)) { Cleanup(); return -1; } ShowWindow(hWnd, nCmdShow); CUSTOM_VTX vtx[] = { { 200, 200, 0, 1, 0xff0000ff }, { 200, 0, 0, 1, 0xff00ff00 }, { 400, 200, 0, 1, 0xffff0000 }, }; MSG msg = { 0 }; while (msg.message != WM_QUIT) { if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { TranslateMessage(&msg); DispatchMessage(&msg); } else { pD3DDev->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 0, 0), 1, 0); pD3DDev->BeginScene(); pD3DDev->SetFVF(CUSTOM_FVF); pD3DDev->DrawPrimitiveUP(D3DPT_TRIANGLELIST, 1, vtx, sizeof CUSTOM_VTX); pD3DDev->EndScene(); pD3DDev->Present(NULL, NULL, NULL, NULL); } } Cleanup(); return msg.wParam; } LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_DESTROY: PostQuitMessage(0); return 0; } return DefWindowProc(hWnd, msg, wParam, lParam); } HWND InitWindow(HINSTANCE hInstance, int nCmdShow) { WNDCLASSEX wc = { sizeof WNDCLASSEX }; wc.style = CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = WndProc; wc.hInstance = hInstance; wc.hbrBackground = HBRUSH(COLOR_WINDOW + 1); wc.lpszClassName = L"dx9sample1"; if (!RegisterClassEx(&wc)) return NULL; DWORD deStyle = WS_OVERLAPPEDWINDOW ^ WS_MAXIMIZEBOX ^ WS_THICKFRAME; RECT rc = { 0, 0, 400, 400 }; AdjustWindowRect(&rc, deStyle, FALSE); HWND hWnd = CreateWindow( wc.lpszClassName, L"dx9sample1", deStyle, CW_USEDEFAULT, 0, rc.right - rc.left, rc.bottom - rc.top, NULL, NULL, hInstance, NULL); return hWnd; } HRESULT InitD3D(HWND hWnd) { HRESULT hr; pD3D = Direct3DCreate9(D3D_SDK_VERSION); if (!pD3D) return E_FAIL; D3DPRESENT_PARAMETERS d3dpp = { 0 }; d3dpp.BackBufferFormat = D3DFMT_UNKNOWN; d3dpp.MultiSampleType = D3DMULTISAMPLE_NONE; d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; d3dpp.Windowed = TRUE; d3dpp.AutoDepthStencilFormat = D3DFMT_UNKNOWN; d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT; hr = pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, D3DCREATE_HARDWARE_VERTEXPROCESSING, &d3dpp, &pD3DDev); if (FAILED(hr)) return hr; return S_OK; } void Cleanup() { SAFE_RELEASE(pD3DDev); SAFE_RELEASE(pD3D); } }}

表示オプション

横に並べて表示:
変化行の前後のみ表示: