From b05badcf901f61ed54e24ec3eedab302ac0e91d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hatvani=20Tam=C3=A1s?= Date: Tue, 17 Mar 2026 11:20:56 +0100 Subject: [PATCH] implemented new layer function imguirender --- SakuraCore/src/Application.cpp | 20 ++++++++++++++++---- SakuraCore/src/imguilayer.cpp | 12 ++++++++++++ SakuraCore/src/imguilayer.h | 1 + 3 files changed, 29 insertions(+), 4 deletions(-) diff --git a/SakuraCore/src/Application.cpp b/SakuraCore/src/Application.cpp index 69dbe99..5c4db4b 100644 --- a/SakuraCore/src/Application.cpp +++ b/SakuraCore/src/Application.cpp @@ -6,7 +6,6 @@ #include "SDL3/SDL_render.h" #include "imgui.h" #include "imgui_impl_sdl3.h" -#include "imgui_impl_sdlrenderer3.h" #define SDL_MAIN_HANDLED 1 @@ -82,10 +81,13 @@ void Application::Run() { float time = 0; + // Update functions before rendereing for (auto layer : m_LayerStack) { layer->OnFrame(time); } + // Events + // can i connect my events to sdl events and use their dispatcher? SDL_Event event; while (SDL_PollEvent(&event)) { @@ -108,11 +110,21 @@ void Application::Run() { } // // Rendering - ImGui::Render(); + + m_ImGuiLayer->Begin(); + SDL_SetRenderScale(m_Renderer, io.DisplayFramebufferScale.x, io.DisplayFramebufferScale.y); - SDL_SetRenderDrawColor(m_Renderer, (Uint8)255, (Uint8)255, (Uint8)255, (Uint8)255); + SDL_SetRenderDrawColor(m_Renderer, (Uint8)111, (Uint8)232, (Uint8)168, (Uint8)0); SDL_RenderClear(m_Renderer); - ImGui_ImplSDLRenderer3_RenderDrawData(ImGui::GetDrawData(), m_Renderer); + // the above 3 lines go before implsdl3 render + // or not? + + for (auto layer : m_LayerStack) { + layer->OnImGuiRender(); + } + + m_ImGuiLayer->End(); + SDL_RenderPresent(m_Renderer); } } diff --git a/SakuraCore/src/imguilayer.cpp b/SakuraCore/src/imguilayer.cpp index acc48d4..edfc0b8 100644 --- a/SakuraCore/src/imguilayer.cpp +++ b/SakuraCore/src/imguilayer.cpp @@ -48,4 +48,16 @@ void ImGuiLayer::End() { ImGui::EndFrame(); } +void ImGuiLayer::OnImGuiRender() { + ImGuiIO &io = ImGui::GetIO(); + bool demoWindow = true; + ImGui::Begin("Test window"); + ImGui::ShowDemoWindow(&demoWindow); + ImGui::Text("Application avg %.3f ms/frame (%.1f FPS)", 1000.0f / io.Framerate, io.Framerate); + + if (ImGui::Button("Quit")) { + Application::Get().SetRunningState(false); + } + ImGui::End(); +} } // namespace SakuraVNE diff --git a/SakuraCore/src/imguilayer.h b/SakuraCore/src/imguilayer.h index bdee95d..1a7a0e7 100644 --- a/SakuraCore/src/imguilayer.h +++ b/SakuraCore/src/imguilayer.h @@ -11,6 +11,7 @@ public: // virtual void OnFrame(float timestamp) override; virtual void OnAttach() override; virtual void OnDetach() override; + virtual void OnImGuiRender() override; // virtual void OnEvent() override; void Begin();