Files
DX12/EngineTest/Main.cpp
2026-03-19 18:27:49 +08:00

86 lines
1.4 KiB
C++

/**
* @file Main.cpp
* @brief 测试程序入口与主循环。
*/
#include "Test.h"
#pragma comment(lib, "engine.lib")
#if TEST_ENTITY_COMPONENTS
#include "TestEntityComponent.h"
#elif TEST_WINDOW_COMPONENTS
#include "TestWindow.h"
#elif TEST_RENDERER
#include "TestRenderer.h"
#endif
#ifdef _WIN64
#include <Windows.h>
#include <filesystem>
// TODO: duplicate
std::filesystem::path
set_current_directory_to_executable_path()
{
wchar_t path[MAX_PATH]{};
const u32 length{ GetModuleFileName(0, &path[0], MAX_PATH) };
if (!length || GetLastError() == ERROR_INSUFFICIENT_BUFFER) return {};
std::filesystem::path p{ path };
std::filesystem::current_path(p.parent_path());
return std::filesystem::current_path();
}
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
#if _DEBUG
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
#endif
set_current_directory_to_executable_path();
engine_test test{};
if (test.initialize())
{
MSG msg{};
bool is_running{ true };
while (is_running)
{
while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
is_running &= (msg.message != WM_QUIT);
}
test.run();
}
}
test.shutdown();
}
#else
int main()
{
#if _DEBUG
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
#endif
engine_test test{};
if (test.initialize())
{
test.run();
}
test.shutdown();
}
#endif