]> code.bitgloo.com Git - clyne/gamedev2.git/commitdiff
transparency with font on ui box
authorClyne Sullivan <clyne@bitgloo.com>
Sat, 20 Aug 2022 15:56:05 +0000 (11:56 -0400)
committerClyne Sullivan <clyne@bitgloo.com>
Sat, 20 Aug 2022 15:56:05 +0000 (11:56 -0400)
Makefile
src/text.cpp
src/text.hpp
src/ui.cpp

index f79435c0c337b1cfdd6cddb5834a2022a80f67fc..e1827a7771ed7e523468e2ee06103472e7c28fb1 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -39,7 +39,7 @@ LIBDIR = lib
 LIBS   = -L$(LIBDIR) -lSDL2 -lpthread -lentityx -lluajit -ldl -lGLEW -lGL \
                 -lSDL2_image -lSOIL -lfreetype
 
-CXXFLAGS = -ggdb -std=c++17 -Wall -Wextra -Werror -pedantic \
+CXXFLAGS = -ggdb -g3 -std=c++17 -Wall -Wextra -Werror -pedantic \
                   -Wno-class-memaccess -Wno-implicit-fallthrough -m64 -O1
 
 CXXINCS = -Isrc -I$(LIBDIR)/LuaJIT/src -I$(LIBDIR)/entityx \
index c25eeae502194352d17852987ec5fc8c5a6508d4..54902240274f4f61bcb164e5f8b5f538ab5ba4e5 100644 (file)
@@ -87,8 +87,8 @@ void TextSystem::loadFont(const std::string& name,
 
     glGenTextures(1, &font.tex);
     glBindTexture(GL_TEXTURE_2D, font.tex);
-    glTexImage2D(GL_TEXTURE_2D, 0, GL_RED, width, height,
-                 0, GL_RED, GL_UNSIGNED_BYTE, 0);
+    glTexImage2D(GL_TEXTURE_2D, 0, GL_INTENSITY8, width, height,
+                 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, 0);
 
     glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
 
@@ -120,7 +120,7 @@ void TextSystem::loadFont(const std::string& name,
         auto* g = face->glyph;
         glTexSubImage2D(GL_TEXTURE_2D, 0, offsetX, offsetY,
                         g->bitmap.width, g->bitmap.rows,
-                        GL_RED, GL_UNSIGNED_BYTE,
+                        GL_LUMINANCE, GL_UNSIGNED_BYTE,
                         g->bitmap.buffer);
 
         auto& d = font.data[c-32];
@@ -144,17 +144,21 @@ void TextSystem::put(const std::string& font,
 {
     if (fontData.find(font) == fontData.end())
         return;
-
-    y += fontData[font].fontSize;
-
     auto& vector = fontData[font].text;
-    if (auto i = std::find_if(vector.begin(), vector.end(), [&x, &y](const Text& t) {
-            return t.x == x && t.y == y; }); i != vector.end()) {
-        vector.erase(i);
+
+    y = -(y + fontData[font].fontSize);
+
+    const auto it = std::find_if(vector.begin(), vector.end(),
+        [&x, &y](const Text& t) {
+            return t.x == static_cast<int>(x) && t.y == static_cast<int>(y);
+        });
+    if (it != vector.end()) {
+        *it = Text(text, x, y);
+    } else {
+        // Invert y axis so positive grows south.
+        fontData[font].text.emplace_back(text, x, y);
     }
 
-    // Invert y axis so positive grows south.
-    fontData[font].text.emplace_back(text, x, -y, -9.0f);
     shouldUpdateVBOs = true;
 }
 
index 604710d28ff0c39fa4aef732ba393bd5e7591579..0f98688914ce98da4d236d20159be0e51fe08824 100644 (file)
@@ -50,8 +50,8 @@ struct FT_Info {
 
 struct Text {
     std::string text;
-    float x;
-    float y;
+    int x;
+    int y;
     float z;
 
     Text(std::string _text, float _x, float _y, float _z = 0.0f) :
index a6c50814ad15f36a28c9aa3fa18211666bf9407f..71cb8757091654f875dd4a7ccc7e2bd9de2793ca 100644 (file)
@@ -8,7 +8,7 @@
 #include <string>
 
 static NewRenderEvent NRE (0, 0, 0, 0);
-static const unsigned int NRE_TEX_DATA = 0xFF0000FF;
+static const unsigned int NRE_TEX_DATA = 0xBBBBBBBB;
 static std::basic_string<TextMeshData> buffer;
 
 void UISystem::configure(entityx::EntityManager&, entityx::EventManager&)
@@ -28,7 +28,7 @@ void UISystem::update(entityx::EntityManager&,
         glGenTextures(1, &NRE.tex);
 
         glBindTexture(GL_TEXTURE_2D, NRE.tex);
-        glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB8, 1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, &NRE_TEX_DATA);
+        glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, &NRE_TEX_DATA);
 
         glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
         glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
@@ -36,12 +36,12 @@ void UISystem::update(entityx::EntityManager&,
         glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
         glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
 
-        buffer += { 30, -50, -8, 0, 0, 1 };
-        buffer += { 160, -50, -8, 0, 0, 1 };
-        buffer += { 160, -10, -8, 0, 0, 1 };
-        buffer += { 160, -10, -8, 0, 0, 1 };
-        buffer += { 30, -10, -8, 0, 0, 1 };
-        buffer += { 30, -50, -8, 0, 0, 1 };
+        buffer += { 30, -50, -5, 0, 0, 1 };
+        buffer += { 160, -50, -5, 0, 0, 1 };
+        buffer += { 160, -10, -5, 0, 0, 1 };
+        buffer += { 160, -10, -5, 0, 0, 1 };
+        buffer += { 30, -10, -5, 0, 0, 1 };
+        buffer += { 30, -50, -5, 0, 0, 1 };
 
         glBindBuffer(GL_ARRAY_BUFFER, NRE.vbo);
         glBufferData(GL_ARRAY_BUFFER,