fix: remove D3D11 debug layer flag that prevented startup on user machines
DRAGONX_DEBUG was defined unconditionally, causing D3D11CreateDevice() to request the debug layer via D3D11_CREATE_DEVICE_DEBUG. This layer is only available on machines with the Windows SDK or Graphics Tools installed, so the call fails with DXGI_ERROR_SDK_COMPONENT_MISSING on regular user machines — causing the app to silently exit.
This commit is contained in:
20
src/main.cpp
20
src/main.cpp
@@ -419,12 +419,20 @@ int main(int argc, char* argv[])
|
||||
if (!g_single_instance.tryLock()) {
|
||||
fprintf(stderr, "Another instance of ObsidianDragon is already running.\n");
|
||||
DEBUG_LOGF("Please close the existing instance first.\n");
|
||||
#ifdef _WIN32
|
||||
MessageBoxW(nullptr, L"Another instance of ObsidianDragon is already running.\nPlease close it first.",
|
||||
L"ObsidianDragon", MB_OK | MB_ICONINFORMATION);
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Initialize SDL
|
||||
if (!InitSDL()) {
|
||||
fprintf(stderr, "Failed to initialize SDL!\n");
|
||||
#ifdef _WIN32
|
||||
MessageBoxW(nullptr, L"Failed to initialize SDL. Please check the debug log at\n%APPDATA%\\ObsidianDragon\\dragonx-debug.log",
|
||||
L"ObsidianDragon - Startup Error", MB_OK | MB_ICONERROR);
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -495,6 +503,8 @@ int main(int argc, char* argv[])
|
||||
nullptr, nullptr, GetModuleHandleW(nullptr), nullptr);
|
||||
if (!nativeHwnd) {
|
||||
fprintf(stderr, "Failed to create native Win32 window (error %lu)\n", GetLastError());
|
||||
MessageBoxW(nullptr, L"Failed to create window. Please check the debug log at\n%APPDATA%\\ObsidianDragon\\dragonx-debug.log",
|
||||
L"ObsidianDragon - Startup Error", MB_OK | MB_ICONERROR);
|
||||
SDL_Quit();
|
||||
return 1;
|
||||
}
|
||||
@@ -534,6 +544,8 @@ int main(int argc, char* argv[])
|
||||
SDL_DestroyProperties(createProps);
|
||||
if (window == nullptr) {
|
||||
fprintf(stderr, "Error: SDL_CreateWindowWithProperties(): %s\n", SDL_GetError());
|
||||
MessageBoxW(nullptr, L"Failed to create SDL window. Please check the debug log at\n%APPDATA%\\ObsidianDragon\\dragonx-debug.log",
|
||||
L"ObsidianDragon - Startup Error", MB_OK | MB_ICONERROR);
|
||||
DestroyWindow(nativeHwnd);
|
||||
SDL_Quit();
|
||||
return 1;
|
||||
@@ -560,6 +572,8 @@ int main(int argc, char* argv[])
|
||||
dragonx::platform::DX11Context dx;
|
||||
if (!dx.init(window)) {
|
||||
fprintf(stderr, "Error: Failed to initialize DirectX 11 context\n");
|
||||
MessageBoxW(nullptr, L"Failed to initialize DirectX 11.\nPlease ensure your graphics drivers are up to date.\n\nCheck the debug log at\n%APPDATA%\\ObsidianDragon\\dragonx-debug.log",
|
||||
L"ObsidianDragon - Graphics Error", MB_OK | MB_ICONERROR);
|
||||
SDL_DestroyWindow(window);
|
||||
SDL_Quit();
|
||||
return 1;
|
||||
@@ -635,6 +649,8 @@ int main(int argc, char* argv[])
|
||||
// Initialize ImGui with DX11 backend
|
||||
if (!InitImGui(window, dx)) {
|
||||
fprintf(stderr, "Failed to initialize ImGui!\n");
|
||||
MessageBoxW(nullptr, L"Failed to initialize ImGui. Please check the debug log at\n%APPDATA%\\ObsidianDragon\\dragonx-debug.log",
|
||||
L"ObsidianDragon - Startup Error", MB_OK | MB_ICONERROR);
|
||||
Shutdown(window, dx);
|
||||
return 1;
|
||||
}
|
||||
@@ -808,6 +824,10 @@ int main(int argc, char* argv[])
|
||||
dragonx::App app;
|
||||
if (!app.init()) {
|
||||
fprintf(stderr, "Failed to initialize application!\n");
|
||||
#ifdef _WIN32
|
||||
MessageBoxW(nullptr, L"Failed to initialize application. Please check the debug log at\n%APPDATA%\\ObsidianDragon\\dragonx-debug.log",
|
||||
L"ObsidianDragon - Startup Error", MB_OK | MB_ICONERROR);
|
||||
#endif
|
||||
#ifdef DRAGONX_USE_DX11
|
||||
Shutdown(window, dx);
|
||||
#else
|
||||
|
||||
Reference in New Issue
Block a user