Я только недавно начал узнавать о Direct3D, когда я научился создавать простое окно, я начал задаваться вопросом, могу ли я автоматизировать этот процесс, поэтому всякий раз, когда мне нужно было бы создать окно, мне просто нужно было бы вызвать функцию с мои конфиги уже настроены. Это основная часть кода, который я написал:
void CreateWindow(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
//Inside this function is the code used to create a simple window.
{
HWND hWnd;
WNDCLASSEX(wc);
ZeroMemory(&wc, sizeof(WNDCLASSEX));
wc.cbSize = sizeof(WNDCLASSEX);
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WindowProc;
wc.hInstance = hInstance;
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.lpszClassName = L"D3D11Class";
wc.hbrBackground = (HBRUSH)COLOR_WINDOW;
RegisterClassEx(&wc);
hWnd = CreateWindowEx(NULL, L"D3D11Class", L"WINDOW", WS_OVERLAPPEDWINDOW, 50, 50, 1080, 720, NULL, NULL, hInstance, NULL);
ShowWindow(hWnd, nCmdShow);
Init3D(hWnd);
}
int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
//The main function where the CreateWindow function was called, also used a loop to keep it running.
{
std::atexit(CleanD3D);
CreateWindow(hInstance, hPrevInstance, lpCmdLine, nCmdShow);
MSG msg;
while (true)
{
if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
if (msg.message == WM_QUIT)
{
break;
}
}
RenderFrame();
}
return msg.wParam;
}
Некоторые из функций, которые я использовал, не были вставлены сюда, потому что я считаю, что они не имеют отношения к тому, что я хочу просмотреть. Кажется, что все работает нормально, когда я запускаю приложение, но я не уверен, что это правильный способ делать что-то, так как я только новичок, поэтому, если кто-нибудь, кто более опытен в кодировании DirectX, может посоветовать мне, я бы будьте благодарны.