DIrectX9で初期化処理ができたで、
バックバッファを表示して実行してみましたが
予想どおりビルドエラーになりました。
コードはこんな感じです。
DirectX
1#include <windows.h> 2#include <d3d9.h> 3 4LRESULT CALLBACK WndProc( 5 HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); 6 7int WINAPI WinMain( 8 HINSTANCE hInstance, HINSTANCE hPrevInstance, 9 LPSTR lpszCmdLine, int nCmdShow) 10{ 11 TCHAR szAppName[] = TEXT("TestApp"); 12 WNDCLASS wc; 13 HWND hwnd; 14 MSG msg; 15 LPDIRECT3D9 m_pD3D = NULL; 16 D3DPRESENT_PARAMETERS m_D3DPP; 17 D3DDISPLAYMODE d3ddm; 18 LPDIRECT3DDEVICE9 m_pD3DDevice; 19 20 wc.style = CS_HREDRAW | CS_VREDRAW; 21 wc.lpfnWndProc = WndProc; 22 wc.cbClsExtra = 0; 23 wc.cbWndExtra = 0; 24 wc.hInstance = hInstance; 25 wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); 26 wc.hCursor = LoadCursor(NULL, IDC_ARROW); 27 wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); 28 wc.lpszMenuName = NULL; 29 wc.lpszClassName = szAppName; 30 31 if (!RegisterClass(&wc)) return 0; 32 33 hwnd = CreateWindow( 34 szAppName, TEXT("Teratail"), 35 WS_OVERLAPPEDWINDOW, 36 CW_USEDEFAULT, CW_USEDEFAULT, 37 CW_USEDEFAULT, CW_USEDEFAULT, 38 NULL, NULL, 39 hInstance, NULL); 40 41 if (!hwnd) return 0; 42 43 d3ddm.Width = 1600; 44 d3ddm.Height = 900; 45 d3ddm.RefreshRate = 0; 46 d3ddm.Format = D3DFMT_R8G8B8; 47 48 BOOL isFullScreen = FALSE; 49 for (int i = 0; i < __argc; i++) { 50 if (_stricmp(__argv[i], "/f") == 0) { 51 isFullScreen = TRUE; 52 break; 53 } 54 } 55 56 if ((m_pD3D = ::Direct3DCreate9(D3D_SDK_VERSION)) == 0) { 57 return E_FAIL; 58 } 59 60 ZeroMemory(&m_D3DPP, sizeof(D3DPRESENT_PARAMETERS)); 61 62 m_D3DPP.BackBufferCount = 1; 63 if (isFullScreen) { 64 m_D3DPP.Windowed = FALSE; 65 m_D3DPP.BackBufferWidth = 1600; 66 m_D3DPP.BackBufferHeight = 900; 67 } 68 else { 69 m_D3DPP.Windowed = TRUE; 70 } 71 m_D3DPP.BackBufferFormat = d3ddm.Format; 72 m_D3DPP.SwapEffect = D3DSWAPEFFECT_DISCARD; 73 m_D3DPP.EnableAutoDepthStencil = TRUE; 74 m_D3DPP.AutoDepthStencilFormat = D3DFMT_D16; 75 76 if (FAILED(m_pD3D->CreateDevice(D3DADAPTER_DEFAULT, 77 D3DDEVTYPE_HAL, 78 hwnd, 79 D3DCREATE_HARDWARE_VERTEXPROCESSING, 80 &m_D3DPP, &m_pD3DDevice))) { 81 if (FAILED(m_pD3D->CreateDevice(D3DADAPTER_DEFAULT, 82 D3DDEVTYPE_HAL, 83 hwnd, 84 D3DCREATE_SOFTWARE_VERTEXPROCESSING, 85 &m_D3DPP, &m_pD3DDevice))) { 86 if (FAILED(m_pD3D->CreateDevice(D3DADAPTER_DEFAULT, 87 D3DDEVTYPE_REF, 88 hwnd, 89 D3DCREATE_SOFTWARE_VERTEXPROCESSING, 90 &m_D3DPP, &m_pD3DDevice))) { 91 return E_FAIL; 92 } 93 } 94 } 95 96 if (FAILED(m_pD3DDevice->Clear(0,NULL, 97 D3DCLEAR_TARGET | 98 D3DCLEAR_ZBUFFER, 99 D3DCOLOR_XRGB(0, 0, 0), 100 1.0f, 101 0))) { 102 return 0; 103 } 104 105 if (SUCCEEDED(m_pD3DDevice->BeginScene())) { 106 107 108 109 m_pD3DDevice->EndScene(); 110 } 111 112 if (FAILED(m_pD3DDevice->Present(0, 0, 0, 0))) { 113 m_pD3DDevice->Reset(&m_D3DPP); 114 } 115 116 ShowWindow(hwnd, nCmdShow); 117 UpdateWindow(hwnd); 118 119 while (GetMessage(&msg, NULL, 0, 0) > 0) { 120 TranslateMessage(&msg); 121 DispatchMessage(&msg); 122 } 123 124 return msg.wParam; 125} 126 127LRESULT CALLBACK WndProc( 128 HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) 129{ 130 switch (uMsg) { 131 case WM_DESTROY: 132 PostQuitMessage(0); 133 return 0; 134 } 135 136 return DefWindowProc(hwnd, uMsg, wParam, lParam); 137} 138
1>C:\Users\ユーザー名\source\repos\DirectX9-Lesson01\Debug\DirectX9-Lesson01.exe : fatal error LNK1120: 1 件の未解決の外部参照
とのエラーが出ました。
どこか間違っているかもしれません。
コードに赤波線はありません。
それとも何か描画しなきゃいけないんですかね...?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/03 09:19
2020/05/03 12:52