Browse Source

fixed font buffer overwriting each other

Kajetan Johannes Hammerle 4 years ago
parent
commit
014e733323

+ 3 - 0
src/me/hammerle/snuviengine/TestGame.java

@@ -33,8 +33,11 @@ public class TestGame implements Game {
         }
     }
 
+    private boolean toggle;
+
     @Override
     public void renderTick(Renderer renderer, float lag) {
+        toggle = !toggle;
         renderer.translateTo(0.0f, 0.0f);
         renderer.updateMatrix();
         float y = 10;

+ 6 - 3
src/me/hammerle/snuviengine/api/FontRenderer.java

@@ -26,6 +26,7 @@ public final class FontRenderer {
     private int color = 0;
     private int scale = 1;
     private ByteBuffer buffer;
+    private int previousOffset = 0;
     private int offset = BUFFER_BYTE_LENGTH;
     private int width = 0;
     private int height = 0;
@@ -83,12 +84,14 @@ public final class FontRenderer {
 
     private ByteBuffer getNextBuffer(int byteLength) {
         GLHelper.glBindBuffer(vertexBuffer);
+        previousOffset = offset;
         offset += byteLength;
         if(offset + byteLength >= BUFFER_BYTE_LENGTH) {
-            offset = 0;
+            previousOffset = 0;
+            offset = byteLength;
             glBufferData(GL_ARRAY_BUFFER, BUFFER_BYTE_LENGTH, GL_STREAM_DRAW);
         }
-        return glMapBufferRange(GL_ARRAY_BUFFER, offset, byteLength, GL_MAP_WRITE_BIT | GL_MAP_UNSYNCHRONIZED_BIT, buffer);
+        return glMapBufferRange(GL_ARRAY_BUFFER, previousOffset, byteLength, GL_MAP_WRITE_BIT | GL_MAP_UNSYNCHRONIZED_BIT, buffer);
     }
 
     private float addStringToBuffer(float x, float y, boolean shadow, String text) {
@@ -191,7 +194,7 @@ public final class FontRenderer {
     private void drawBuffer() {
         GLHelper.glBindVertexArray(vertexArray);
         FONT_TEXTURE[Math.min(scale - 1, FONT_TEXTURE.length - 1)].bind();
-        glDrawArrays(GL_TRIANGLES, offset / 20, buffer.limit() / 20);
+        glDrawArrays(GL_TRIANGLES, previousOffset / 20, buffer.limit() / 20);
     }
 
     public FontRenderer getSize(String text) {