ADD: Change color of Text
This commit is contained in:
parent
441ea64a2f
commit
1e266709c5
@ -8,9 +8,13 @@
|
|||||||
|
|
||||||
#include "../text/Font.h"
|
#include "../text/Font.h"
|
||||||
|
|
||||||
UiText::UiText(Font &font, std::string text, const glm::vec2 &relativePos, const glm::vec2& relativeSize) : font(font), text(std::move(text)) {
|
UiText::UiText(Font &font, std::string text, const glm::vec2 &relativePos, glm::vec3 color): font(font), text(std::move(text)), color(color) {
|
||||||
uiPositioner.setRelativePos(relativePos);
|
uiPositioner.setRelativePos(relativePos);
|
||||||
uiPositioner.setRelativeSize(relativeSize);
|
}
|
||||||
|
|
||||||
|
UiText::UiText(Font &font, std::string text, const glm::vec2 &relativePos) : font(font), text(std::move(text)) {
|
||||||
|
uiPositioner.setRelativePos(relativePos);
|
||||||
|
color = glm::vec3(0.f);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UiText::onCollectRenderData(UiRenderBundle& ui_render_bundle) {
|
void UiText::onCollectRenderData(UiRenderBundle& ui_render_bundle) {
|
||||||
|
|||||||
@ -6,13 +6,15 @@
|
|||||||
#define DICEWARS_SIEDLER_UITEXT_H
|
#define DICEWARS_SIEDLER_UITEXT_H
|
||||||
#include "UiComponent.h"
|
#include "UiComponent.h"
|
||||||
#include "UiRenderBundle.h"
|
#include "UiRenderBundle.h"
|
||||||
|
#include "glm/vec3.hpp"
|
||||||
|
|
||||||
class Font;
|
class Font;
|
||||||
|
|
||||||
|
|
||||||
class UiText : public UiComponent {
|
class UiText : public UiComponent {
|
||||||
public:
|
public:
|
||||||
UiText(Font& font, std::string text, const glm::vec2& relativePos, const glm::vec2& relativeSize);
|
UiText(Font& font, std::string text, const glm::vec2& relativePos, glm::vec3 size);
|
||||||
|
UiText(Font& font, std::string text, const glm::vec2& relativePos);
|
||||||
void setText(const std::string& text);
|
void setText(const std::string& text);
|
||||||
|
|
||||||
[[nodiscard]] const Font& getFont() const { return font; }
|
[[nodiscard]] const Font& getFont() const { return font; }
|
||||||
@ -21,11 +23,15 @@ public:
|
|||||||
return text;
|
return text;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[[nodiscard]] glm::vec3 getColor() const { return color; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void onCollectRenderData(UiRenderBundle &uiRenderBundle) override;
|
void onCollectRenderData(UiRenderBundle &uiRenderBundle) override;
|
||||||
private:
|
private:
|
||||||
std::string text;
|
std::string text;
|
||||||
Font& font;
|
Font& font;
|
||||||
|
|
||||||
|
glm::vec3 color;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -20,9 +20,10 @@ void TextRenderer::renderTexts(const std::vector<UiText*> &textsToRender) {
|
|||||||
}
|
}
|
||||||
glEnable(GL_DEPTH_TEST);
|
glEnable(GL_DEPTH_TEST);
|
||||||
glDisable(GL_BLEND);
|
glDisable(GL_BLEND);
|
||||||
|
shader.stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextRenderer::renderText(const UiText &textToRender) const {
|
void TextRenderer::renderText(const UiText &textToRender) {
|
||||||
const Dimensions& d = textToRender.uiPositioner.screenSpace;
|
const Dimensions& d = textToRender.uiPositioner.screenSpace;
|
||||||
|
|
||||||
const Font& font = textToRender.getFont();
|
const Font& font = textToRender.getFont();
|
||||||
@ -36,7 +37,7 @@ void TextRenderer::renderText(const UiText &textToRender) const {
|
|||||||
|
|
||||||
|
|
||||||
float scale = 1.0f;
|
float scale = 1.0f;
|
||||||
|
shader.loadTextColor(textToRender.getColor());
|
||||||
for (char c : text) {
|
for (char c : text) {
|
||||||
const Font::Character& ch = font.getCharacter(c);
|
const Font::Character& ch = font.getCharacter(c);
|
||||||
|
|
||||||
|
|||||||
@ -17,6 +17,9 @@ class TextRenderer {
|
|||||||
public:
|
public:
|
||||||
TextRenderer() : textModel(Loader::instance().loadTextModel()) {};
|
TextRenderer() : textModel(Loader::instance().loadTextModel()) {};
|
||||||
void renderTexts(const std::vector<UiText *> &textsToRender);
|
void renderTexts(const std::vector<UiText *> &textsToRender);
|
||||||
|
|
||||||
|
void renderText(const UiText &textToRender);
|
||||||
|
|
||||||
void renderText(const UiText &textToRender) const;
|
void renderText(const UiText &textToRender) const;
|
||||||
private:
|
private:
|
||||||
TextShader shader;
|
TextShader shader;
|
||||||
|
|||||||
@ -8,8 +8,13 @@ void TextShader::loadProjectionMatrix(glm::mat4 matrix) {
|
|||||||
ShaderProgram::loadMatrix(location_projectionMatrix, matrix);
|
ShaderProgram::loadMatrix(location_projectionMatrix, matrix);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TextShader::loadTextColor(glm::vec3 color) {
|
||||||
|
ShaderProgram::loadVector(location_textColor, color);
|
||||||
|
}
|
||||||
|
|
||||||
void TextShader::getAllUniformLocations() {
|
void TextShader::getAllUniformLocations() {
|
||||||
location_projectionMatrix = ShaderProgram::getUniformLocation("projectionMatrix");
|
location_projectionMatrix = ShaderProgram::getUniformLocation("projectionMatrix");
|
||||||
|
location_textColor = ShaderProgram::getUniformLocation("textColor");
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextShader::bindAttributes() const {
|
void TextShader::bindAttributes() const {
|
||||||
|
|||||||
@ -14,6 +14,7 @@ public :
|
|||||||
TextShader::getAllUniformLocations();
|
TextShader::getAllUniformLocations();
|
||||||
}
|
}
|
||||||
void loadProjectionMatrix(glm::mat4 matrix);
|
void loadProjectionMatrix(glm::mat4 matrix);
|
||||||
|
void loadTextColor(glm::vec3 color);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void getAllUniformLocations() override;
|
void getAllUniformLocations() override;
|
||||||
@ -23,6 +24,7 @@ private:
|
|||||||
inline static const std::string FRAGMENT_FILE = "assets/shaders/textFragmentShader.glsl";
|
inline static const std::string FRAGMENT_FILE = "assets/shaders/textFragmentShader.glsl";
|
||||||
|
|
||||||
int location_projectionMatrix;
|
int location_projectionMatrix;
|
||||||
|
int location_textColor;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -32,7 +32,7 @@ void UILayer::onAttach() {
|
|||||||
|
|
||||||
Font myFont("/usr/share/fonts/TTF/DejaVuSans.ttf", 48);
|
Font myFont("/usr/share/fonts/TTF/DejaVuSans.ttf", 48);
|
||||||
font = std::make_unique<Font>(myFont);
|
font = std::make_unique<Font>(myFont);
|
||||||
auto text = std::make_unique<UiText>(*font, "Hello World!", glm::vec2(0.5f, 0.5f), glm::vec2(1.f));
|
auto text = std::make_unique<UiText>(*font, "Hello World!", glm::vec2(0.5f, 0.5f), glm::vec3(1,1,1));
|
||||||
|
|
||||||
rootContainer->addChild(std::move(text));
|
rootContainer->addChild(std::move(text));
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user