質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
DirectX

DirectX(ダイレクトエックス)は、 マイクロソフトが開発したゲーム・マルチメディア処理用のAPIの集合です。

Q&A

解決済

1回答

702閲覧

DirectX9の描画失敗...

MZK_0104

総合スコア23

DirectX

DirectX(ダイレクトエックス)は、 マイクロソフトが開発したゲーム・マルチメディア処理用のAPIの集合です。

0グッド

0クリップ

投稿2020/05/03 07:49

編集2020/05/03 08:38

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 件の未解決の外部参照
とのエラーが出ました。
どこか間違っているかもしれません。
コードに赤波線はありません。

それとも何か描画しなきゃいけないんですかね...?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

こちらでは問題なくビルドが通りました。
LNK1120は単独では出ず、その前にLNK2019LNK2001が出るはずですが、
LNK1120が単独で出ているのでしょうか?

このコードの場合はd3d9.libのリンク忘れや、[リンカー]-[システム]-[サブシステム]でWindowsではなくコンソールにした場合などに出ます。

投稿2020/05/03 09:13

編集2020/05/03 11:43
SHOMI

総合スコア4079

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

SHOMI

2020/05/03 09:19

このコードの場合はd3d9.libのリンク忘れや、[リンカー]-[システム]-[サブシステム]で"Windows"ではなく"コンソール"にした場合などに出ます。
MZK_0104

2020/05/03 12:52

ご予想のとおり d3d9.libなどがリンクされていなかったようです
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問