fix: makefile i cmakes
fix: initSDLVideo en opengl de linux
This commit is contained in:
@@ -538,6 +538,10 @@ auto Screen::initSDLVideo() -> bool {
|
||||
const auto WINDOW_HEIGHT = Options::video.border.enabled ? Options::game.height + (Options::video.border.height * 2) : Options::game.height;
|
||||
#ifdef __APPLE__
|
||||
SDL_WindowFlags window_flags = SDL_WINDOW_METAL;
|
||||
#elif defined(LINUX_BUILD)
|
||||
// En Linux, SDL_WINDOW_OPENGL puede entrar en conflicto con el backend del renderer;
|
||||
// el hint SDL_HINT_RENDER_DRIVER="opengl" es suficiente para seleccionar OpenGL.
|
||||
SDL_WindowFlags window_flags = 0;
|
||||
#else
|
||||
SDL_WindowFlags window_flags = SDL_WINDOW_OPENGL;
|
||||
#endif
|
||||
@@ -555,11 +559,20 @@ auto Screen::initSDLVideo() -> bool {
|
||||
// Crear renderer
|
||||
renderer_ = SDL_CreateRenderer(window_, nullptr);
|
||||
if (renderer_ == nullptr) {
|
||||
std::cerr << "FATAL: Failed to create renderer! SDL Error: " << SDL_GetError() << '\n';
|
||||
SDL_DestroyWindow(window_);
|
||||
window_ = nullptr;
|
||||
SDL_Quit();
|
||||
return false;
|
||||
// Fallback: reintentar sin forzar OpenGL (SDL elige el mejor disponible)
|
||||
std::cerr << "WARNING: OpenGL renderer failed (" << SDL_GetError() << "), trying auto-select...\n";
|
||||
SDL_SetHint(SDL_HINT_RENDER_DRIVER, "");
|
||||
renderer_ = SDL_CreateRenderer(window_, nullptr);
|
||||
if (renderer_ == nullptr) {
|
||||
std::cerr << "FATAL: Failed to create renderer! SDL Error: " << SDL_GetError() << '\n';
|
||||
SDL_DestroyWindow(window_);
|
||||
window_ = nullptr;
|
||||
SDL_Quit();
|
||||
return false;
|
||||
}
|
||||
// Sin OpenGL garantizado, deshabilitar shaders
|
||||
Options::video.shaders = false;
|
||||
std::cout << "WARNING: Shaders disabled (OpenGL not available)\n";
|
||||
}
|
||||
|
||||
// Configurar renderer
|
||||
|
||||
Reference in New Issue
Block a user