Transició a surface: game.cpp fet

This commit is contained in:
2025-03-03 19:15:24 +01:00
parent c9e75ad5c8
commit d7e0178602
18 changed files with 177 additions and 92 deletions

View File

@@ -61,6 +61,10 @@ Screen::Screen(SDL_Window *window, SDL_Renderer *renderer)
border_texture_ = createTexture(renderer, options.game.width + options.video.border.width * 2, options.game.height + options.video.border.height * 2);
setBorderColor(border_color_);
// Crea la surface donde se vuelcan los datos
surface_ = std::make_shared<Surface>(nullptr, options.game.width, options.game.height);
surface_->loadPalette(Asset::get()->get("zx-spectrum-8x.gif"));
// Establece el modo de video
setVideoMode(options.video.mode);
@@ -91,7 +95,11 @@ void Screen::clean(Uint8 index)
}
// Prepara para empezar a dibujar en la textura de juego
void Screen::start() { SDL_SetRenderTarget(renderer_, game_texture_); }
void Screen::start()
{
SDL_SetRenderTarget(renderer_, game_texture_);
setRenderSurfaceData(nullptr);
}
// Prepara para empezar a dibujar en la textura del borde
void Screen::startDrawOnBorder() { SDL_SetRenderTarget(renderer_, border_texture_); }
@@ -348,7 +356,7 @@ void Screen::resetShaders()
}
// Establece el renderizador para las surfaces
void Screen::setRenderSurface(std::shared_ptr<Surface> surface)
void Screen::setRenderSurfaceData(std::shared_ptr<Surface> surface)
{
(surface) ? surface_->redirectSurfaceDataTo(surface) : surface_->restoreOriginalSurfaceData();
}