filtre nearest o linear per al pipeline sdl
This commit is contained in:
@@ -94,7 +94,7 @@ Screen::Screen()
|
||||
|
||||
// Crea la textura de destino
|
||||
game_canvas_ = SDL_CreateTexture(renderer_, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_TARGET, param.game.width, param.game.height);
|
||||
SDL_SetTextureScaleMode(game_canvas_, SDL_SCALEMODE_NEAREST);
|
||||
SDL_SetTextureScaleMode(game_canvas_, Options::video.scale_mode);
|
||||
|
||||
// Inicializar buffer de píxeles para SDL3GPU
|
||||
pixel_buffer_.resize(static_cast<size_t>(param.game.width) * static_cast<size_t>(param.game.height));
|
||||
@@ -670,6 +670,25 @@ void Screen::toggleVSync() {
|
||||
}
|
||||
}
|
||||
|
||||
// Aplica Options::video.scale_mode a la textura del canvas de juego
|
||||
void Screen::applyFilter() {
|
||||
SDL_SetTextureScaleMode(game_canvas_, Options::video.scale_mode);
|
||||
}
|
||||
|
||||
// Alterna el modo de filtrado entre nearest y linear
|
||||
void Screen::toggleFilter() {
|
||||
Options::video.scale_mode = (Options::video.scale_mode == SDL_SCALEMODE_NEAREST)
|
||||
? SDL_SCALEMODE_LINEAR
|
||||
: SDL_SCALEMODE_NEAREST;
|
||||
applyFilter();
|
||||
}
|
||||
|
||||
// Devuelve true si el backend SDL3GPU está activo y con aceleración hardware
|
||||
auto Screen::isHardwareAccelerated() -> bool {
|
||||
auto* self = Screen::get();
|
||||
return self != nullptr && self->shader_backend_ && self->shader_backend_->isHardwareAccelerated();
|
||||
}
|
||||
|
||||
// Establece el estado del V-Sync
|
||||
void Screen::setVSync(bool enabled) {
|
||||
Options::video.vsync = enabled;
|
||||
|
||||
Reference in New Issue
Block a user