diff --git a/src/dawn/scene/components/ui/text/UILabel.cpp b/src/dawn/scene/components/ui/text/UILabel.cpp index b18d6cb4..2c09cccf 100644 --- a/src/dawn/scene/components/ui/text/UILabel.cpp +++ b/src/dawn/scene/components/ui/text/UILabel.cpp @@ -98,7 +98,7 @@ float_t UILabel::getContentHeight() { } void UILabel::rebufferQuads(const std::vector newTexts) { - assertTrue(newTexts.size() < FONT_SHADER_PARTS_MAX); + assertTrue(newTexts.size() <= FONT_SHADER_PARTS_MAX); int32_t nextTexture = 0; glm::vec2 position(0, 0); @@ -149,7 +149,7 @@ void UILabel::rebufferQuads(const std::vector newTexts) { } // Buffer shader values - fontData.textures[partIndex] = textureMap[realText.texture]; + fontData.textures[partIndex].value = textureMap[realText.texture]; fontData.colors[partIndex] = realText.style.color; // Get some texture info @@ -174,7 +174,7 @@ void UILabel::rebufferQuads(const std::vector newTexts) { glm::vec4 uvs(0, 0, 1, 1); glm::vec4 vert(0, 0, 0, 0); vertices.push_back(std::make_pair(vert, uvs)); - fontData.fontQuadMappings[quadCountTotal] = partIndex; + fontData.quadMappings[quadCountTotal].value = partIndex; quadCountTotal++; } @@ -281,7 +281,7 @@ void UILabel::rebufferQuads(const std::vector newTexts) { } // Set the part index to the quad mappings - fontData.fontQuadMappings[quadCountTotal] = partIndex; + fontData.quadMappings[quadCountTotal].value = partIndex; quadCountTotal++; realText.text += ch; } diff --git a/src/dawnliminal/scenes/HelloWorldScene.hpp b/src/dawnliminal/scenes/HelloWorldScene.hpp index 0f0aa532..ec365bb5 100644 --- a/src/dawnliminal/scenes/HelloWorldScene.hpp +++ b/src/dawnliminal/scenes/HelloWorldScene.hpp @@ -28,7 +28,17 @@ namespace Dawn { auto textboxItem = this->createSceneItem(); auto textbox = textboxItem->addComponent(); - textbox->richText = "Hello World"; + textbox->alignX = UI_COMPONENT_ALIGN_STRETCH; + textbox->alignY = UI_COMPONENT_ALIGN_STRETCH; + textbox->alignment = glm::vec4(0, 0, 0, 0); + textbox->richText = std::string( + "" + "Hello World" + "" + "" + "BBBBBB" + "" + ); textbox->transform->setParent(canvas->transform); } diff --git a/src/dawnopengl/display/shader/ShaderParameterBuffer.hpp b/src/dawnopengl/display/shader/ShaderParameterBuffer.hpp index c943a332..9fdd88a0 100644 --- a/src/dawnopengl/display/shader/ShaderParameterBuffer.hpp +++ b/src/dawnopengl/display/shader/ShaderParameterBuffer.hpp @@ -11,6 +11,11 @@ namespace Dawn { typedef GLuint shaderbufferslot_t; typedef GLuint shaderbufferlocation_t; + + struct ShaderParameterBufferArrayInteger { + int32_t value; + float_t padding[3]; + }; template class ShaderParameterBuffer : public IShaderParameterBuffer { diff --git a/src/dawnopengl/display/shader/shaders/FontShader.cpp b/src/dawnopengl/display/shader/shaders/FontShader.cpp index 66b7b165..4ef00de5 100644 --- a/src/dawnopengl/display/shader/shaders/FontShader.cpp +++ b/src/dawnopengl/display/shader/shaders/FontShader.cpp @@ -26,8 +26,8 @@ void FontShader::compile() { "};" "layout (shared) uniform ub_Font {\n" - "int u_FontQuadMappings[" MACRO_STRINGIFY(FONT_SHADER_QUADS_MAX) "];\n" "int u_FontTextures[" MACRO_STRINGIFY(FONT_SHADER_PARTS_MAX) "];\n" + "int u_FontQuadMappings[" MACRO_STRINGIFY(FONT_SHADER_QUADS_MAX) "];\n" "vec4 u_FontColors[" MACRO_STRINGIFY(FONT_SHADER_PARTS_MAX) "];\n" "};\n" diff --git a/src/dawnopengl/display/shader/shaders/FontShader.hpp b/src/dawnopengl/display/shader/shaders/FontShader.hpp index eab266f2..04b6a812 100644 --- a/src/dawnopengl/display/shader/shaders/FontShader.hpp +++ b/src/dawnopengl/display/shader/shaders/FontShader.hpp @@ -7,18 +7,16 @@ #include "UIShader.hpp" #include "util/macro.hpp" -#define FONT_SHADER_PARTS_MAX 8 +#define FONT_SHADER_PARTS_MAX 4 #define FONT_SHADER_QUADS_MAX 1024 #define FONT_SHADER_TEXTURE_MAX 4 namespace Dawn { - #pragma pack(push, 4) struct FontShaderBufferData { - int32_t fontQuadMappings[FONT_SHADER_QUADS_MAX]; - int32_t textures[FONT_SHADER_PARTS_MAX]; + struct ShaderParameterBufferArrayInteger textures[FONT_SHADER_PARTS_MAX]; + struct ShaderParameterBufferArrayInteger quadMappings[FONT_SHADER_QUADS_MAX]; struct Color colors[FONT_SHADER_PARTS_MAX]; }; - #pragma pack(pop) class FontShaderBuffer : public ShaderParameterBuffer {