[英]why is there no output to my program in direct x 11?
我是 Direct x 3d 的新手,對此知之甚少。 我最近開始(觀看)一系列教程( https://youtu.be/2NOgrpXks9A ),甚至似乎無法對“hello world”等價物進行排序。 當我從教程中運行程序時,我的程序沒有顯示任何內容,而它應該顯示一個空的 window。 雖然這個問題可能看起來很幼稚,但我不知道還能在哪里提出這樣的問題......
我在網上看到有人在聲明“winmain”arguments,例如:
int CALLBACK WinMain(
_In_ HINSTANCE hInstance,
_In_ HINSTANCE hPrevInstance,
_In_ LPSTR lpCmdLine,
_In_ int nCmdShow
)
...但是,這仍然沒有用。 我在解決方案平台 x86 上運行:-windows 10 -visual studio 2019
#include <Windows.h>
int CALLBACK WinMain(
HINSTANCE hInstance, //allows us to load bitmmaps or icons
HINSTANCE hPrevInstance,//always 0
LPSTR LPcmdLine,//contains cmd line arguments
int nCmdShow)
{
const auto pClassName = "hw3dbutts";
//register window class
WNDCLASSEX wc = { 0 };
wc.cbSize = sizeof( wc );
wc.style = CS_OWNDC;
wc.lpfnWndProc = DefWindowProc;
wc.cbClsExtra = 0;
wc.cbClsExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = nullptr;
wc.hCursor = nullptr;
wc.hbrBackground = nullptr;
wc.lpszMenuName = nullptr;
wc.lpszClassName = nullptr;
RegisterClassEx(&wc);
//create window instance
HWND hWnd = CreateWindowEx(
0, pClassName,
"happy Hard Window",
WS_CAPTION | WS_MINIMIZE | WS_SYSMENU,
200, 200, 640, 480,
nullptr,nullptr,hInstance, nullptr
);
//show the damn window!
ShowWindow(hWnd, SW_SHOW);
while(true);
return 0;
}
由於沒有錯誤,似乎沒有出現錯誤消息,但是沒有輸出任何內容,我想知道為什么......
問題是: while(true);
創建並顯示 window 后,您的最小 Win32 程序需要包含一個“消息泵”:
// Main message loop
MSG msg = {};
while (WM_QUIT != msg.message)
{
if (PeekMessage(&msg, nullptr, 0, 0, PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
由於您是 Direct3D 新手,我建議您查看GitHub上的 Direct3D 游戲模板。
你應該看看DirectX Tool Kit和它的教程。 Internet 上的許多教程都有些過時了,並且使用的是舊版 DirectX SDK ,盡管它們都可以在正確的上下文中使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.