Merge pull request #140 from urzuline/dev

finish the fps uncap changes and remove the testing patch
This commit is contained in:
Tropical 2026-03-10 23:49:21 -05:00 committed by GitHub
commit f2ae9a509f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 30 additions and 2 deletions

View file

@ -70,6 +70,9 @@ static void onFramebufferResize(int w, int h)
::glViewport(0, 0, w, h); ::glViewport(0, 0, w, h);
} }
// V-Sync
// Initialize OpenGL & The SDL window. // Initialize OpenGL & The SDL window.
void C4JRender::Initialise() void C4JRender::Initialise()
{ {
@ -121,8 +124,14 @@ void C4JRender::Initialise()
SDL_Quit(); SDL_Quit();
return; return;
} }
SDL_GL_SetSwapInterval(0); // V-Sync Off Please.
// 4JCraft VSync/V-Sync
#ifdef ENABLE_VSYNC
SDL_GL_SetSwapInterval(1); // V-Sync On Please.
#else
SDL_GL_SetSwapInterval(0); // V-Sync Off Please.
#endif
int fw, fh; SDL_GetWindowSize(s_window, &fw, &fh); onFramebufferResize(fw, fh); int fw, fh; SDL_GetWindowSize(s_window, &fw, &fh); onFramebufferResize(fw, fh);
// We initialize the OpenGL states. Touching those values makes some funny artifacts appear. // We initialize the OpenGL states. Touching those values makes some funny artifacts appear.

View file

@ -116,7 +116,13 @@ void Options::init()
bobView = true; bobView = true;
anaglyph3d = false; anaglyph3d = false;
advancedOpengl = false; advancedOpengl = false;
//4JCRAFT V-Sync / VSync
#ifdef ENABLE_VSYNC
framerateLimit = 2; framerateLimit = 2;
#else
framerateLimit = 3;
#endif
fancyGraphics = true; fancyGraphics = true;
ambientOcclusion = true; ambientOcclusion = true;
renderClouds = true; renderClouds = true;
@ -522,4 +528,4 @@ void Options::save()
bool Options::isCloudsOn() bool Options::isCloudsOn()
{ {
return viewDistance < 2 && renderClouds; return viewDistance < 2 && renderClouds;
} }

View file

@ -2189,6 +2189,9 @@ int GameRenderer::getFpsCap(int option)
int maxFps = 200; int maxFps = 200;
if (option == 1) maxFps = 120; if (option == 1) maxFps = 120;
if (option == 2) maxFps = 35; if (option == 2) maxFps = 35;
#ifndef ENABLE_VSYNC
if (option == 3) maxFps = 0;
#endif
return maxFps; return maxFps;
} }

View file

@ -37,6 +37,12 @@ global_cpp_defs = [
'-DDEBUG', '-DDEBUG',
] ]
if get_option('enable_vsync')
global_cpp_defs += '-DENABLE_VSYNC'
message('v-sync enabled')
endif
if host_machine.system() == 'linux' if host_machine.system() == 'linux'
global_cpp_defs += [ global_cpp_defs += [
'-Dlinux', '-Dlinux',

4
meson.options Normal file
View file

@ -0,0 +1,4 @@
option('enable_vsync',
type : 'boolean',
value : true,
description : 'Toggles weather V-Sync will be toggle on or off.')