summaryrefslogtreecommitdiff
path: root/source/renderer
diff options
context:
space:
mode:
Diffstat (limited to 'source/renderer')
-rw-r--r--source/renderer/renderer.cpp3
-rw-r--r--source/renderer/renderer.h87
2 files changed, 85 insertions, 5 deletions
diff --git a/source/renderer/renderer.cpp b/source/renderer/renderer.cpp
index 2ba8887..22eb333 100644
--- a/source/renderer/renderer.cpp
+++ b/source/renderer/renderer.cpp
@@ -1,3 +1,6 @@
+#include <stdio.h>
+#include "glad/glad.h"
+#include "SDL2/SDL_rwops.h"
#include "renderer.h"
u32 gl_shader_program(char* vs, char* fs)
diff --git a/source/renderer/renderer.h b/source/renderer/renderer.h
index 806d832..6d9b7f6 100644
--- a/source/renderer/renderer.h
+++ b/source/renderer/renderer.h
@@ -1,5 +1,79 @@
#pragma once
+#define STB_TRUETYPE_IMPLEMENTATION
+#include "stb_truetype.h"
+
+#include "../core.h"
+#include "../math.h"
+#include "../array/array.h"
+
+#define BATCH_SIZE 2000
+
+struct TextChar {
+ s64 lsb;
+ s64 advance;
+ Vec2 bbox0;
+ Vec2 bbox1;
+ Vec2 size;
+};
+
+struct TextState {
+ r32 scale;
+ u32 pixel_size;
+ s32 ascent;
+ s32 descent;
+ s32 linegap;
+ u32 texture_atlas_id;
+ u32 sp;
+ u32 vao;
+ u32 vbo;
+ u32 chunk_size;
+ IVec2 bbox0;
+ IVec2 bbox1;
+ stbtt_fontinfo font;
+ s32* char_indexes;
+ Mat4* transforms;
+ TextChar* char_map;
+};
+
+struct GLRenderer {
+ // colored quad
+ b8 cq_init;
+ u32 cq_sp;
+ u32 cq_vao;
+ // camera
+ Vec3 preset_up_dir;
+ Mat4 cam_proj;
+ // ui camera
+ b8 ui_cam_update;
+ Vec3 ui_cam_pos;
+ Vec3 ui_cam_look;
+ Mat4 ui_cam_view;
+ // game camera
+ b8 cam_update;
+ Vec3 cam_pos;
+ Vec3 cam_look;
+ Mat4 cam_view;
+ // Batched cq
+ // batching buffer
+ u32 cq_batch_sp;
+ u32 cq_batch_vao;
+ u32 cq_batch_vbo;
+ u32 cq_batch_count;
+ r32_array cq_pos_batch;
+ r32_array cq_color_batch;
+ // Batched line
+ u32 line_sp;
+ u32 line_vao;
+ u32 line_vbo;
+ u32 line_batch_count;
+ r32_array line_pos_batch;
+ r32_array line_color_batch;
+
+ // ui text
+ TextState ui_text;
+};
+
u32 gl_shader_program(char *vs, char *fs);
u32 gl_shader_program_from_path(const char *vspath, const char *fspath);
@@ -17,7 +91,7 @@ void gl_setup_colored_quad_optimized(
GLRenderer* renderer,
u32 sp
);
-void gl_draw_colored_quad_optimised(
+void gl_draw_colored_quad_optimized(
GLRenderer* renderer,
Vec3 position,
Vec2 size,
@@ -26,18 +100,21 @@ void gl_draw_colored_quad_optimised(
void gl_cq_flush(GLRenderer *renderer);
// ==================== LINE ====================
-void gl_setup_colored_line(GLRenderer *renderer, u32 sp);
-void gl_draw_colored_line(
+void gl_setup_line(GLRenderer *renderer, u32 sp);
+void gl_draw_line(
GLRenderer *renderer,
Vec3 start,
Vec3 end,
- Vec2 size,
Vec3 color
);
void gl_line_flush(GLRenderer *renderer);
// ==================== FONT RENDERING ====================
void gl_setup_text(TextState *uistate);
-void gl_render_text(GLRenderer *renderer, Vec2 position, Vec2 color, r32 size);
+void gl_render_text(GLRenderer *renderer,
+ char *text,
+ Vec2 position,
+ Vec3 color,
+ r32 font_size);
void gl_text_flush(GLRenderer *renderer, u32 render_count);