switch to microseconds

This commit is contained in:
ohyzha
2024-08-27 09:26:10 +03:00
parent 32ffd21076
commit 0fe28f4759
2 changed files with 5 additions and 13 deletions

View File

@@ -81,25 +81,17 @@ namespace OpenVulkano
{ {
if (newFpsCap < 0) if (newFpsCap < 0)
{ {
cappedFrameTime = std::chrono::milliseconds(0); cappedFrameTime = std::chrono::microseconds(0);
} }
else else
{ {
cappedFrameTime = std::chrono::milliseconds(1000 / newFpsCap); cappedFrameTime = std::chrono::microseconds(1'000'000 / newFpsCap);
} }
} }
void GraphicsAppManager::OnCappedFPS(const auto& frameStartTime) void GraphicsAppManager::OnCappedFPS(const auto& frameStartTime)
{ {
int32_t fpsCap = engineConfig->GetFpsCap(); auto frameEndTime = frameStartTime + cappedFrameTime;
fpsCapRemainder += 1000 % fpsCap;
auto expectedFrameTime = cappedFrameTime;
if (fpsCapRemainder >= fpsCap)
{
expectedFrameTime += std::chrono::milliseconds(1);
fpsCapRemainder -= fpsCap;
}
auto frameEndTime = frameStartTime + expectedFrameTime;
while (clock::now() < frameEndTime) while (clock::now() < frameEndTime)
{ {
std::this_thread::yield(); std::this_thread::yield();

View File

@@ -37,8 +37,8 @@ namespace OpenVulkano
RenderAPI::RenderApi renderApi; RenderAPI::RenderApi renderApi;
bool paused = false, running = false; bool paused = false, running = false;
float fpsTimer = 0, avgFps = 0, avgFrameTime = 0; float fpsTimer = 0, avgFps = 0, avgFrameTime = 0;
uint64_t frameCount = 0, lastFrameCount = 0, fpsCapRemainder = 0; uint64_t frameCount = 0, lastFrameCount = 0;
std::chrono::milliseconds cappedFrameTime = std::chrono::milliseconds(0); std::chrono::microseconds cappedFrameTime = std::chrono::microseconds(0);
Timer frameTimer; Timer frameTimer;
std::string windowTitleFormat; std::string windowTitleFormat;
Input::InputManager* inputManager; Input::InputManager* inputManager;