Implementats els shaders

This commit is contained in:
2025-02-20 08:48:55 +01:00
parent cc0f050c50
commit 9cb57e2ff2
20 changed files with 957 additions and 104 deletions

View File

@@ -131,6 +131,7 @@ void Director::initOptions()
options->videoMode = 0;
options->windowSize = 3;
options->filter = FILTER_NEAREST;
options->shaders = false;
options->vSync = true;
options->integerScale = true;
options->keepAspect = true;
@@ -373,6 +374,7 @@ bool Director::saveConfig()
file << "filter=FILTER_LINEAL\n";
}
file << "shaders=" + boolToString(options->shaders) + "\n";
file << "vSync=" + boolToString(options->vSync) + "\n";
file << "integerScale=" + boolToString(options->integerScale) + "\n";
file << "keepAspect=" + boolToString(options->keepAspect) + "\n";
@@ -1106,6 +1108,11 @@ bool Director::setOptions(options_t *options, std::string var, std::string value
}
}
else if (var == "shaders")
{
options->shaders = stringToBool(value);
}
else if (var == "vSync")
{
options->vSync = stringToBool(value);
@@ -1262,9 +1269,10 @@ void Director::initInput()
input->bindKey(input_exit, SDL_SCANCODE_ESCAPE);
input->bindKey(input_window_dec_size, SDL_SCANCODE_F1);
input->bindKey(input_window_inc_size, SDL_SCANCODE_F2);
input->bindKey(input_window_fullscreen, SDL_SCANCODE_F3);
input->bindKey(input_swap_palette, SDL_SCANCODE_F5);
input->bindKey(input_switch_music, SDL_SCANCODE_M);
input->bindKey(input_toggle_videomode, SDL_SCANCODE_F3);
input->bindKey(input_toggle_shaders, SDL_SCANCODE_F4);
input->bindKey(input_toggle_palette, SDL_SCANCODE_F5);
input->bindKey(input_toggle_music, SDL_SCANCODE_M);
input->bindKey(input_toggle_border, SDL_SCANCODE_B);
// Mando - Movimiento
@@ -1282,8 +1290,8 @@ void Director::initInput()
input->bindGameControllerButton(input_pause, SDL_CONTROLLER_BUTTON_START);
input->bindGameControllerButton(input_exit, SDL_CONTROLLER_BUTTON_BACK);
#endif
input->bindGameControllerButton(input_swap_palette, SDL_CONTROLLER_BUTTON_LEFTSHOULDER);
input->bindGameControllerButton(input_switch_music, SDL_CONTROLLER_BUTTON_RIGHTSHOULDER);
input->bindGameControllerButton(input_toggle_palette, SDL_CONTROLLER_BUTTON_LEFTSHOULDER);
input->bindGameControllerButton(input_toggle_music, SDL_CONTROLLER_BUTTON_RIGHTSHOULDER);
input->bindGameControllerButton(input_toggle_border, SDL_CONTROLLER_BUTTON_X);
}
@@ -1300,7 +1308,7 @@ bool Director::initSDL()
bool success = true;
// Inicializa SDL
if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_GAMECONTROLLER | SDL_INIT_AUDIO) < 0)
if (SDL_Init(SDL_INIT_EVERYTHING) < 0)
{
if (options->console)
{
@@ -1322,6 +1330,12 @@ bool Director::initSDL()
}
}
// Activa el render OpenGL
if (!SDL_SetHint(SDL_HINT_RENDER_DRIVER, "opengl"))
{
std::cout << "Warning: opengl not enabled!\n";
}
// Crea la ventana
int incW = 0;
int incH = 0;
@@ -1331,7 +1345,7 @@ bool Director::initSDL()
incH = options->borderHeight * 2;
}
window = SDL_CreateWindow(WINDOW_CAPTION, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, (options->gameWidth + incW) * options->windowSize, (options->gameHeight + incH) * options->windowSize, SDL_WINDOW_SHOWN | SDL_WINDOW_ALLOW_HIGHDPI);
window = SDL_CreateWindow(WINDOW_CAPTION, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, (options->gameWidth + incW) * options->windowSize, (options->gameHeight + incH) * options->windowSize, SDL_WINDOW_HIDDEN);
if (window == nullptr)
{
if (options->console)
@@ -1343,8 +1357,6 @@ bool Director::initSDL()
else
{
// Crea un renderizador para la ventana. El vsync se activa en funcion de las opciones
// Uint32 flags = SDL_RENDERER_SOFTWARE;
// Uint32 flags = SDL_RENDERER_ACCELERATED;
Uint32 flags = 0;
if (options->vSync)
{
@@ -1400,6 +1412,10 @@ bool Director::setFileList()
asset->add(prefix + "/data/font/subatomic.png", t_font);
asset->add(prefix + "/data/font/subatomic.txt", t_font);
// Shaders
asset->add(prefix + "/data/shaders/crtpi_192.glsl", t_data);
asset->add(prefix + "/data/shaders/crtpi_240.glsl", t_data);
// Datos
asset->add(prefix + "/data/input/gamecontrollerdb.txt", t_data);