From 968485ec1b5bef8967d56a6edc5ec3194f533f9b Mon Sep 17 00:00:00 2001 From: sebastian Date: Sun, 15 Feb 2026 16:56:49 +0100 Subject: [PATCH] ADD: Remove UiTexts from Rendering and only use GuiTextRendering --- CMakeLists.txt | 4 +- src/engine/core/gui/uiComponent/UiComponent.h | 2 +- src/engine/core/gui/uiComponent/UiText.cpp | 7 +- src/engine/core/gui/uiComponent/UiText.h | 2 +- src/engine/renderer/GUIRenderer.cpp | 2 +- src/engine/renderer/GUIRenderer.h | 2 +- src/engine/renderer/TextRenderer.cpp | 68 ------------------- src/engine/renderer/TextRenderer.h | 4 -- .../components}/UiRenderBundle.cpp | 2 +- .../components}/UiRenderBundle.h | 13 +--- src/game/UILayer.cpp | 3 - 11 files changed, 11 insertions(+), 98 deletions(-) rename src/engine/{core/gui/uiComponent => renderer/components}/UiRenderBundle.cpp (61%) rename src/engine/{core/gui/uiComponent => renderer/components}/UiRenderBundle.h (71%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 41b0b95..f365313 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -134,8 +134,8 @@ add_executable(Dicewars_Siedler src/main.cpp src/engine/core/gui/uiComponent/UiText.h src/engine/core/gui/text/Font.cpp src/engine/core/gui/text/Font.h - src/engine/core/gui/uiComponent/UiRenderBundle.cpp - src/engine/core/gui/uiComponent/UiRenderBundle.h + src/engine/renderer/components/UiRenderBundle.cpp + src/engine/renderer/components/UiRenderBundle.h src/engine/renderer/shaders/TextShader.cpp src/engine/renderer/shaders/TextShader.h src/engine/renderer/TextRenderer.cpp diff --git a/src/engine/core/gui/uiComponent/UiComponent.h b/src/engine/core/gui/uiComponent/UiComponent.h index 9142f29..0824051 100644 --- a/src/engine/core/gui/uiComponent/UiComponent.h +++ b/src/engine/core/gui/uiComponent/UiComponent.h @@ -8,7 +8,7 @@ #include #include "layout/UiPositioner.h" -#include "UiRenderBundle.h" +#include "../../../renderer/components/UiRenderBundle.h" #include "../../../renderer/model/GUITexture.h" enum class UiElementState { diff --git a/src/engine/core/gui/uiComponent/UiText.cpp b/src/engine/core/gui/uiComponent/UiText.cpp index 4bc1aff..0254d78 100644 --- a/src/engine/core/gui/uiComponent/UiText.cpp +++ b/src/engine/core/gui/uiComponent/UiText.cpp @@ -22,9 +22,6 @@ void UiText::setText(const std::string &text) { void UiText::onCollectRenderData(UiRenderBundle& ui_render_bundle) { if (!visible) return; - if (this->text == "Runde: 0") { - printf("Runde: 0\n"); - } - - ui_render_bundle.addText(this); + GUIText guiText = GUIText(font, text, uiPositioner.screenSpace); + ui_render_bundle.addGUIText(std::make_shared(guiText)); } diff --git a/src/engine/core/gui/uiComponent/UiText.h b/src/engine/core/gui/uiComponent/UiText.h index 5b9f84f..71dd6c8 100644 --- a/src/engine/core/gui/uiComponent/UiText.h +++ b/src/engine/core/gui/uiComponent/UiText.h @@ -5,7 +5,7 @@ #ifndef DICEWARS_SIEDLER_UITEXT_H #define DICEWARS_SIEDLER_UITEXT_H #include "UiComponent.h" -#include "UiRenderBundle.h" +#include "../../../renderer/components/UiRenderBundle.h" #include "glm/vec3.hpp" class Font; diff --git a/src/engine/renderer/GUIRenderer.cpp b/src/engine/renderer/GUIRenderer.cpp index 892a9a9..872ecc7 100644 --- a/src/engine/renderer/GUIRenderer.cpp +++ b/src/engine/renderer/GUIRenderer.cpp @@ -7,7 +7,7 @@ #include #include -#include "../core/gui/uiComponent/UiRenderBundle.h" +#include "components/UiRenderBundle.h" #include "../toolbox/MathUtils.h" #include "loader/Loader.h" diff --git a/src/engine/renderer/GUIRenderer.h b/src/engine/renderer/GUIRenderer.h index 7de879b..6b10014 100644 --- a/src/engine/renderer/GUIRenderer.h +++ b/src/engine/renderer/GUIRenderer.h @@ -7,7 +7,7 @@ #include #include -#include "../core/gui/uiComponent/UiRenderBundle.h" +#include "components/UiRenderBundle.h" #include "model/GUITexture.h" #include "model/RawModel.h" #include "shaders/GUIShader.h" diff --git a/src/engine/renderer/TextRenderer.cpp b/src/engine/renderer/TextRenderer.cpp index 041c1cc..6815a59 100644 --- a/src/engine/renderer/TextRenderer.cpp +++ b/src/engine/renderer/TextRenderer.cpp @@ -9,74 +9,6 @@ #include "../core/gui/text/Font.h" #include "glm/ext/matrix_clip_space.hpp" -void TextRenderer::renderTexts(const std::vector &textsToRender) { - shader.start(); - shader.loadProjectionMatrix(calculateOrthographicProjectionMatrix()); - glEnable(GL_BLEND); - glDisable(GL_DEPTH_TEST); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - for (const auto &text : textsToRender) { - renderText(*text); - } - glEnable(GL_DEPTH_TEST); - glDisable(GL_BLEND); - shader.stop(); -} - -void TextRenderer::renderText(const UiText &textToRender) { - const Dimensions& d = textToRender.uiPositioner.screenSpace; - - const Font& font = textToRender.getFont(); - const std::string& text = textToRender.getText(); - - float screenX = d.x * Application::getInstance().getWindow().GetWidth(); - float screenY = (1.f - d.y) * Application::getInstance().getWindow().GetHeight(); - - float x = screenX; - float y = screenY - font.getLineHeight(); - - float scale = 1.0f; - shader.loadTextColor(textToRender.getColor()); - for (char c : text) { - const Font::Character& ch = font.getCharacter(c); - - float xpos = x + static_cast(ch.bearing.x) * scale; - float ypos = y - static_cast(ch.size.y - ch.bearing.y) * scale; - - float w = static_cast(ch.size.x) * scale; - float h = static_cast(ch.size.y) * scale; - - float vertices[6][4] = { - { xpos, ypos + h, 0.0f, 0.0f }, - { xpos, ypos, 0.0f, 1.0f }, - { xpos + w, ypos, 1.0f, 1.0f }, - - { xpos, ypos + h, 0.0f, 0.0f }, - { xpos + w, ypos, 1.0f, 1.0f }, - { xpos + w, ypos + h, 1.0f, 0.0f } - }; - - glBindVertexArray(textModel.vaoID); - glEnableVertexAttribArray(0); - - glActiveTexture(GL_TEXTURE0); - glBindTexture(GL_TEXTURE_2D, ch.textureID); - - - glBindBuffer(GL_ARRAY_BUFFER, textModel.vboID); - glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(vertices), vertices); - - glDrawArrays(GL_TRIANGLES, 0, 6); - - x+= static_cast(ch.advance >> 6) * scale; - - glBindVertexArray(0); - glDisableVertexAttribArray(0); - } - - glBindTexture(GL_TEXTURE_2D, 0); -} - void TextRenderer::renderGuiTexts(const std::vector> &texts) { shader.start(); shader.loadProjectionMatrix(calculateOrthographicProjectionMatrix()); diff --git a/src/engine/renderer/TextRenderer.h b/src/engine/renderer/TextRenderer.h index f0daefe..e533595 100644 --- a/src/engine/renderer/TextRenderer.h +++ b/src/engine/renderer/TextRenderer.h @@ -16,10 +16,6 @@ class TextRenderer { public: TextRenderer() : textModel(Loader::instance().loadTextModel()) {}; - void renderTexts(const std::vector &textsToRender); - - void renderText(const UiText &textToRender); - void renderGuiTexts(const std::vector> & texts); void renderGuiText(const GUIText& text); diff --git a/src/engine/core/gui/uiComponent/UiRenderBundle.cpp b/src/engine/renderer/components/UiRenderBundle.cpp similarity index 61% rename from src/engine/core/gui/uiComponent/UiRenderBundle.cpp rename to src/engine/renderer/components/UiRenderBundle.cpp index 168d15d..d18f36a 100644 --- a/src/engine/core/gui/uiComponent/UiRenderBundle.cpp +++ b/src/engine/renderer/components/UiRenderBundle.cpp @@ -2,4 +2,4 @@ // Created by sebastian on 10.02.26. // -#include "UiRenderBundle.h" \ No newline at end of file +#include "UiRenderBundle.h" diff --git a/src/engine/core/gui/uiComponent/UiRenderBundle.h b/src/engine/renderer/components/UiRenderBundle.h similarity index 71% rename from src/engine/core/gui/uiComponent/UiRenderBundle.h rename to src/engine/renderer/components/UiRenderBundle.h index e3841e1..123fe58 100644 --- a/src/engine/core/gui/uiComponent/UiRenderBundle.h +++ b/src/engine/renderer/components/UiRenderBundle.h @@ -7,18 +7,14 @@ #include #include -#include "../../../renderer/model/GUIText.h" +#include "../model/GUIText.h" class UiText; -#include "../../../renderer/model/GUITexture.h" +#include "../model/GUITexture.h" class UiRenderBundle { public: - void addText(UiText* text) { - texts.push_back(text); - } - void addGUITexture(const std::shared_ptr& guiTexture) { guiImages.push_back(guiTexture); } @@ -27,10 +23,6 @@ public: return guiImages; } - std::vector getTexts() { - return texts; - } - void addGUIText(const std::shared_ptr& guiText) { guiTexts.push_back(guiText); } @@ -41,7 +33,6 @@ public: private: std::vector> guiImages; - std::vector texts; std::vector> guiTexts; diff --git a/src/game/UILayer.cpp b/src/game/UILayer.cpp index 3868748..2f275c2 100644 --- a/src/game/UILayer.cpp +++ b/src/game/UILayer.cpp @@ -151,9 +151,6 @@ void UILayer::onUpdate() { auto guis = renderBundle.getGUITextures(); guiRenderer->render(guis); - auto texts = renderBundle.getTexts(); - textRenderer->renderTexts(texts); - auto renderTexts = renderBundle.getGUITexts(); textRenderer->renderGuiTexts(renderTexts);