|
@@ -1,17 +1,16 @@
|
|
|
#include "client/rendering/FontRenderer.h"
|
|
|
+#include "gaming-core/wrapper/Attributes.h"
|
|
|
+#include "gaming-core/utils/List.h"
|
|
|
|
|
|
-FontRenderer::FontRenderer() : buffer(8 * 1024 * 1024), tex("resources/font8x8.png") {
|
|
|
- vertexBuffer.bind();
|
|
|
- vertexBuffer.setFloatAttribute(0, 2, 0, 7);
|
|
|
- vertexBuffer.setFloatAttribute(1, 2, 2, 7);
|
|
|
- vertexBuffer.setFloatAttribute(2, 3, 4, 7);
|
|
|
+FontRenderer::FontRenderer() : tex("resources/font8x8.png") {
|
|
|
+ vertexBuffer.setAttributes(Attributes().addFloat(2).addFloat(2).addFloat(3));
|
|
|
+ vertexBuffer.setStreamData(256 * 4 * 7 * sizeof(float));
|
|
|
}
|
|
|
|
|
|
void FontRenderer::drawString(float x, float y, const char* text) {
|
|
|
- vertexBuffer.bind();
|
|
|
-
|
|
|
const int maxIndex = 256;
|
|
|
- buffer.reset(maxIndex * 4 * sizeof (float) * 7);
|
|
|
+
|
|
|
+ List<float, maxIndex * 4 * 7> buffer;
|
|
|
|
|
|
int index = 0;
|
|
|
float r = 1.0f;
|
|
@@ -36,15 +35,40 @@ void FontRenderer::drawString(float x, float y, const char* text) {
|
|
|
float maxX = minX + (1.0f / 16.0f) - 2.0f / 128.0f;
|
|
|
float maxY = minY + (1.0f / 16.0f);
|
|
|
|
|
|
- buffer.add(x).add(y).add(minX).add(minY).add(r).add(g).add(b);
|
|
|
- buffer.add(x).add(y + 8).add(minX).add(maxY).add(r).add(g).add(b);
|
|
|
- buffer.add(x + 6).add(y).add(maxX).add(minY).add(r).add(g).add(b);
|
|
|
- buffer.add(x + 6).add(y + 8).add(maxX).add(maxY).add(r).add(g).add(b);
|
|
|
+ buffer.add(x);
|
|
|
+ buffer.add(y);
|
|
|
+ buffer.add(minX);
|
|
|
+ buffer.add(minY);
|
|
|
+ buffer.add(r);
|
|
|
+ buffer.add(g);
|
|
|
+ buffer.add(b);
|
|
|
+ buffer.add(x);
|
|
|
+ buffer.add(y + 8);
|
|
|
+ buffer.add(minX);
|
|
|
+ buffer.add(maxY);
|
|
|
+ buffer.add(r);
|
|
|
+ buffer.add(g);
|
|
|
+ buffer.add(b);
|
|
|
+ buffer.add(x + 6);
|
|
|
+ buffer.add(y);
|
|
|
+ buffer.add(maxX);
|
|
|
+ buffer.add(minY);
|
|
|
+ buffer.add(r);
|
|
|
+ buffer.add(g);
|
|
|
+ buffer.add(b);
|
|
|
+ buffer.add(x + 6);
|
|
|
+ buffer.add(y + 8);
|
|
|
+ buffer.add(maxX);
|
|
|
+ buffer.add(maxY);
|
|
|
+ buffer.add(r);
|
|
|
+ buffer.add(g);
|
|
|
+ buffer.add(b);
|
|
|
|
|
|
x += 6;
|
|
|
index++;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
tex.bind(0);
|
|
|
- buffer.draw(7);
|
|
|
+ vertexBuffer.updateData(0, buffer.getLength() * sizeof(float), buffer.begin());
|
|
|
+ vertexBuffer.drawStrip(buffer.getLength() / 7);
|
|
|
}
|