From 94c36fb2f2c8f1c90752df4df96f7f65d7ade9b0 Mon Sep 17 00:00:00 2001 From: Bad Diode Date: Mon, 29 Aug 2022 07:11:23 +0200 Subject: Add working monospace text indexing to shader --- src/main.c | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/src/main.c b/src/main.c index 2a901a3..543ef86 100644 --- a/src/main.c +++ b/src/main.c @@ -216,9 +216,9 @@ render(Context *ctx) { f32 idx; }; struct Letter letters[] = { - {-0.25, 0.0, 0}, - {0.0, 0.0, 1}, - {0.25, 0.0, 2}, + {0, 0.0, 0}, + {1, 0.0, 1}, + {2, 0.0, 2}, }; u32 offset_vbo; glGenBuffers(1, &offset_vbo); @@ -259,6 +259,7 @@ render(Context *ctx) { glBindBuffer(GL_ARRAY_BUFFER, 0); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); + // TODO: Store the shaders as separate files for easier editing. const char* vert_src = "#version 330 core\n" "layout (location = 0) in vec2 position;\n" @@ -266,11 +267,25 @@ render(Context *ctx) { "layout (location = 2) in vec3 offset;\n" "out vec2 tex;\n" "void main() {\n" -" float idx = offset.z;\n" +// TODO: Uniforms +" float w = 800;\n" +" float h = 600;\n" +" float size = 5;\n" " float N = 3;\n" + +" float idx = offset.z;\n" " float m = 1.0 / N;\n" " float k = m * idx;\n" -" gl_Position = vec4(position / 8 + offset.xy, 0.0, 1.0);\n" +// TODO: Only 8x8 monospace fonts for now +" float font_w = 8;\n" +" float font_h = 8;\n" +// NOTE: This makes sures that the fonts have the right size. +" vec2 scalar = vec2(font_w / w, font_h / h) * size;\n" +" vec2 pos = tex_coords * scalar;\n" +" pos += vec2(0.0, 1.0 - scalar.y);\n" +" pos += scalar * offset.xy;\n" +" pos = mix(vec2(-1.0), vec2(1.0), pos);\n" +" gl_Position = vec4(pos, 0.0, 1.0);\n" " tex = tex_coords * vec2(m, 1.0) + vec2(k, 0.0);\n" "}"; -- cgit v1.2.1