diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/main.cpp | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/src/main.cpp b/src/main.cpp index 24a3147..eeed38f 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -363,6 +363,9 @@ int main() SDL_RenderSetLogicalSize(renderer, WIDTH, HEIGHT); SDL_RenderSetIntegerScale(renderer, SDL_FALSE); SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, "best"); + #ifdef __APPLE__ + SDL_SetHint(SDL_HINT_RENDER_DRIVER, "metal"); + #endif SDL_SetWindowResizable(window, SDL_TRUE); SDL_SetWindowFullscreen(window, SDL_WINDOW_FULLSCREEN_DESKTOP); @@ -393,15 +396,13 @@ int main() while (running) { + Uint32 frameStart = SDL_GetTicks(); + push_keys_to_lua(L, keys); lua_setglobal(L, "keys"); call_lua_function(L, "Update"); - Uint32 currentFrameTime = SDL_GetTicks(); - deltaTime = (currentFrameTime - lastFrameTime) / 1000.0f; - lastFrameTime = currentFrameTime; - lua_pushnumber(L, deltaTime); lua_setglobal(L, "deltaTime"); @@ -548,7 +549,21 @@ int main() textList.clear(); SDL_RenderPresent(renderer); - SDL_Delay(1); + + // Frame limiting + Uint32 frameTime = SDL_GetTicks() - frameStart; + const int targetFrameTimeMs = 1000 / 60; // 60 FPS + + if (frameTime < targetFrameTimeMs) + { + SDL_Delay(targetFrameTimeMs - frameTime); + frameTime = targetFrameTimeMs; // We waited full frame time + } + + // Update deltaTime for Lua with the actual frame duration including delay + deltaTime = frameTime / 1000.0f; + lua_pushnumber(L, deltaTime); + lua_setglobal(L, "deltaTime"); } lua_close(L); |
