mirror of
https://github.com/HarbourMasters/Starship
synced 2026-05-26 15:54:29 -04:00
Unify FPS and V-Sync controls and behavior (#181)
- DirectX's "Match Refresh Rate" is now a checkbox like in OpenGL and Metal. - Clamp max FPS to refresh rate when V-Sync is enabled or can't be disabled, regardless of the FPS sliders setting, to avoid slowdown in Metal / OpenGL and dropping frames in DirectX as much as possible. -FPS slider allows up to 360 FPS in every renderer. - More descriptive V-Sync tooltip Also fixes GetInterpolationFPS() not being used to calculate desired FPS. Co-authored-by: Lywx <kiritodev01@gmail.com>
This commit is contained in:
+7
-7
@@ -480,7 +480,7 @@ void GameEngine::ProcessGfxCommands(Gfx* commands) {
|
||||
wnd->SetRendererUCode(UcodeHandlers::ucode_f3dex);
|
||||
|
||||
std::vector<std::unordered_map<Mtx*, MtxF>> mtx_replacements;
|
||||
int target_fps = CVarGetInteger("gInterpolationFPS", 60);
|
||||
int target_fps = GameEngine::Instance->GetInterpolationFPS();
|
||||
static int last_fps;
|
||||
static int last_update_rate;
|
||||
static int time;
|
||||
@@ -526,16 +526,16 @@ void GameEngine::ProcessGfxCommands(Gfx* commands) {
|
||||
}
|
||||
|
||||
uint32_t GameEngine::GetInterpolationFPS() {
|
||||
if (Ship::Context::GetInstance()->GetWindow()->GetWindowBackend() == Ship::WindowBackend::FAST3D_DXGI_DX11) {
|
||||
return CVarGetInteger("gInterpolationFPS", 60);
|
||||
}
|
||||
|
||||
if (CVarGetInteger("gMatchRefreshRate", 0)) {
|
||||
return Ship::Context::GetInstance()->GetWindow()->GetCurrentRefreshRate();
|
||||
|
||||
} else if (CVarGetInteger("gVsyncEnabled", 1) ||
|
||||
!Ship::Context::GetInstance()->GetWindow()->CanDisableVerticalSync()) {
|
||||
return std::min<uint32_t>(Ship::Context::GetInstance()->GetWindow()->GetCurrentRefreshRate(),
|
||||
CVarGetInteger("gInterpolationFPS", 60));
|
||||
}
|
||||
|
||||
return std::min<uint32_t>(Ship::Context::GetInstance()->GetWindow()->GetCurrentRefreshRate(),
|
||||
CVarGetInteger("gInterpolationFPS", 60));
|
||||
return CVarGetInteger("gInterpolationFPS", 60);
|
||||
}
|
||||
|
||||
uint32_t GameEngine::GetInterpolationFrameCount()
|
||||
|
||||
Reference in New Issue
Block a user