calculating delta time

This commit is contained in:
2026-03-17 16:38:14 +01:00
parent a6ccb37b10
commit 51cfab26f2
4 changed files with 26 additions and 9 deletions

View File

@@ -4,8 +4,11 @@
#include "Log.h" #include "Log.h"
#include "SDL3/SDL_main.h" #include "SDL3/SDL_main.h"
#include "SDL3/SDL_render.h" #include "SDL3/SDL_render.h"
#include "SDL3/SDL_stdinc.h"
#include "SDL3/SDL_timer.h"
#include "imgui.h" #include "imgui.h"
#include "imgui_impl_sdl3.h" #include "imgui_impl_sdl3.h"
#include <exception>
#define SDL_MAIN_HANDLED 1 #define SDL_MAIN_HANDLED 1
@@ -77,9 +80,13 @@ bool Application::Init() {
void Application::Run() { void Application::Run() {
ImGuiIO &io = ImGui::GetIO(); ImGuiIO &io = ImGui::GetIO();
Uint64 oldTime = SDL_GetTicks();
while (GetRunningState()) { while (GetRunningState()) {
float time = 0; Uint64 currentTime = SDL_GetTicks();
Uint64 time = currentTime - oldTime;
oldTime = currentTime;
// Update functions before rendereing // Update functions before rendereing
for (auto layer : m_LayerStack) { for (auto layer : m_LayerStack) {
@@ -87,7 +94,7 @@ void Application::Run() {
} }
// Events // Events
// can i connect my events to sdl events and use their dispatcher? // TODO: can i connect my events to sdl events and use their dispatcher?
SDL_Event event; SDL_Event event;
while (SDL_PollEvent(&event)) { while (SDL_PollEvent(&event)) {
@@ -108,16 +115,21 @@ void Application::Run() {
SetSDLWindowSurface(SDL_GetWindowSurface(GetSDLWindow())); SetSDLWindowSurface(SDL_GetWindowSurface(GetSDLWindow()));
} }
} }
//
// Rendering
// Rendering
m_ImGuiLayer->Begin(); m_ImGuiLayer->Begin();
SDL_SetRenderScale(m_Renderer, io.DisplayFramebufferScale.x, io.DisplayFramebufferScale.y); SDL_SetRenderScale(m_Renderer, io.DisplayFramebufferScale.x, io.DisplayFramebufferScale.y);
SDL_SetRenderDrawColor(m_Renderer, (Uint8)111, (Uint8)232, (Uint8)168, (Uint8)0); SDL_SetRenderDrawColor(m_Renderer, (Uint8)111, (Uint8)232, (Uint8)168, (Uint8)0);
SDL_RenderClear(m_Renderer); SDL_RenderClear(m_Renderer);
// the above 3 lines go before implsdl3 render
// or not? char buffer[32];
snprintf(buffer, sizeof(buffer), "%lu", time);
ImGui::Begin("Calculated Delta time");
ImGui::Text(buffer);
ImGui::SameLine();
ImGui::Text("ms");
ImGui::End();
for (auto layer : m_LayerStack) { for (auto layer : m_LayerStack) {
layer->OnImGuiRender(); layer->OnImGuiRender();

View File

@@ -1,5 +1,6 @@
#pragma once #pragma once
#include "SDL3/SDL_stdinc.h"
#include <string> #include <string>
namespace SakuraVNE { namespace SakuraVNE {
@@ -8,7 +9,7 @@ public:
Layer(const std::string &name = "Layer"); Layer(const std::string &name = "Layer");
virtual ~Layer() = default; virtual ~Layer() = default;
virtual void OnFrame(float timestamp) {} virtual void OnFrame(Uint64 timestamp) {}
virtual void OnEvent() {} virtual void OnEvent() {}
virtual void OnAttach() {} virtual void OnAttach() {}
virtual void OnDetach() {} virtual void OnDetach() {}

View File

@@ -1,6 +1,7 @@
#include "imguilayer.h" #include "imguilayer.h"
#include "Application.h" #include "Application.h"
#include "Log.h" #include "Log.h"
#include "SDL3/SDL_stdinc.h"
#include "imgui.h" #include "imgui.h"
#include "imgui_impl_sdl3.h" #include "imgui_impl_sdl3.h"
#include "imgui_impl_sdlrenderer3.h" #include "imgui_impl_sdlrenderer3.h"
@@ -60,4 +61,7 @@ void ImGuiLayer::OnImGuiRender() {
} }
ImGui::End(); ImGui::End();
} }
void ImGuiLayer::OnFrame(Uint64 time) {}
void ImGuiLayer::OnEvent() {}
} // namespace SakuraVNE } // namespace SakuraVNE

View File

@@ -8,11 +8,11 @@ public:
ImGuiLayer(); ImGuiLayer();
~ImGuiLayer() = default; ~ImGuiLayer() = default;
// virtual void OnFrame(float timestamp) override; virtual void OnFrame(Uint64 timestamp) override;
virtual void OnAttach() override; virtual void OnAttach() override;
virtual void OnDetach() override; virtual void OnDetach() override;
virtual void OnImGuiRender() override; virtual void OnImGuiRender() override;
// virtual void OnEvent() override; virtual void OnEvent() override;
void Begin(); void Begin();
void End(); void End();