millorat el renderitzat amb el borde activat

This commit is contained in:
2025-03-21 08:27:24 +01:00
parent b8cde79107
commit 2ee2d5c45d
4 changed files with 50 additions and 20 deletions

View File

@@ -52,7 +52,7 @@ Screen::Screen(SDL_Window *window, SDL_Renderer *renderer)
info_resolution_ = std::to_string(DM.w) + " X " + std::to_string(DM.h) + " AT " + std::to_string(DM.refresh_rate) + " HZ";
// Ajusta los tamaños
adjustGameCanvasRect();
game_surface_dstrect_ = {options.video.border.width, options.video.border.height, options.game.width, options.game.height};
adjustWindowSize();
current_palette_ = findPalette(options.video.palette);
@@ -139,7 +139,7 @@ void Screen::clearRenderer(Color color)
// Prepara para empezar a dibujar en la textura de juego
void Screen::start()
{
SDL_SetRenderTarget(renderer_, game_texture_);
//SDL_SetRenderTarget(renderer_, game_texture_);
setRendererSurface(nullptr);
}
@@ -170,7 +170,6 @@ void Screen::setVideoMode(int mode)
// Configura el modo de pantalla y ajusta la ventana
SDL_SetWindowFullscreen(window_, options.video.mode);
adjustWindowSize();
adjustGameCanvasRect();
adjustRenderLogicalSize();
// Reinicia los shaders
@@ -286,16 +285,6 @@ void Screen::adjustWindowSize()
}
}
// Ajusta game_canvas_rect_
void Screen::adjustGameCanvasRect()
{
game_rect_ = {
options.video.border.enabled ? options.video.border.width : 0,
options.video.border.enabled ? options.video.border.height : 0,
options.game.width,
options.game.height};
}
// Ajusta el tamaño lógico del renderizador
void Screen::adjustRenderLogicalSize() { SDL_RenderSetLogicalSize(renderer_, window_width_, window_height_); }
@@ -395,9 +384,8 @@ void Screen::surfaceToTexture()
// Si está el borde activo, vuelca gameCanvas sobre borderCanvas
if (options.video.border.enabled)
{
setRendererSurface(border_surface_);
game_surface_->render(options.video.border.width, options.video.border.height);
border_surface_->copyToTexture(renderer_, border_texture_);
game_surface_->copyToTexture(renderer_, border_texture_, nullptr, &game_surface_dstrect_);
}
else
{