fix: Renderizar textura antes de inicializar shaders

En constructor: SDL_RenderTexture() antes de initShaders()
Esto asegura que la textura tiene contenido válido.

Revertido lazy initialization que no funcionaba.
Vuelta a la solución original que sí funcionaba.
This commit is contained in:
2025-10-02 22:00:30 +02:00
parent ba0b0930b0
commit 8d94ed516c
2 changed files with 24 additions and 45 deletions

View File

@@ -55,8 +55,12 @@ Screen::Screen()
setDebugInfoEnabled(true);
#endif
// Los shaders se inicializarán lazy en el primer render si están activos
// Esto evita problemas con texturas vacías al inicio
// Renderizar una vez la textura vacía para que tenga contenido válido
// antes de inicializar los shaders (evita pantalla negra)
SDL_RenderTexture(renderer_, game_canvas_, nullptr, nullptr);
// Ahora sí inicializar los shaders
initShaders();
}
// Destructor
@@ -96,19 +100,8 @@ void Screen::renderPresent() {
SDL_SetRenderTarget(renderer_, nullptr);
clean();
if (Options::video.shaders) {
// Lazy initialization: inicializar shaders la primera vez que se usan
if (!shader_backend_) {
initShaders();
}
if (shader_backend_) {
shader_backend_->render();
} else {
// Fallback si falla la inicialización
SDL_RenderTexture(renderer_, game_canvas_, nullptr, nullptr);
SDL_RenderPresent(renderer_);
}
if (Options::video.shaders && shader_backend_) {
shader_backend_->render();
} else {
SDL_RenderTexture(renderer_, game_canvas_, nullptr, nullptr);
SDL_RenderPresent(renderer_);