aboutsummaryrefslogtreecommitdiff
path: root/src/renderer/imm_renderer_impl.h
diff options
context:
space:
mode:
author3gg <3gg@shellblade.net>2025-07-02 08:57:16 -0700
committer3gg <3gg@shellblade.net>2025-07-02 08:57:16 -0700
commite386405ac636b7e4a41d5c03eb363e9c120ce919 (patch)
treedc742fa2c2e8d677936657f225042bc430ac4280 /src/renderer/imm_renderer_impl.h
parentdba3ce51eeab2485f757143ab7560e89590824b8 (diff)
Set C23
Diffstat (limited to 'src/renderer/imm_renderer_impl.h')
-rw-r--r--src/renderer/imm_renderer_impl.h44
1 files changed, 0 insertions, 44 deletions
diff --git a/src/renderer/imm_renderer_impl.h b/src/renderer/imm_renderer_impl.h
deleted file mode 100644
index 5ece354..0000000
--- a/src/renderer/imm_renderer_impl.h
+++ /dev/null
@@ -1,44 +0,0 @@
1#pragma once
2
3#include <gfx/renderer.h>
4#include <gfx/sizes.h>
5
6#include <math/mat4.h>
7#include <math/vec3.h>
8
9#include <stdbool.h>
10#include <stddef.h>
11
12typedef struct Geometry Geometry;
13typedef struct ShaderProgram ShaderProgram;
14
15/// Immediate mode renderer.
16///
17/// Currently, the immediate mode renderer can only draw up to a maximum number
18/// of primitives per frame. It does not adjust this number dynamically. Keeps
19/// things simple while the extra complexity is not needed.
20typedef struct ImmRenderer {
21 GfxCore* gfxcore;
22 ShaderProgram* shader;
23 Geometry* triangles;
24 size_t num_triangle_verts; // Number of triangle verts this frame.
25 // TODO: wireframe rendering.
26 struct {
27 bool wireframe : 1;
28 } flags;
29 vec3 triangle_verts[IMM_MAX_NUM_TRIANGLES * 3];
30 // Matrix stack contains pre-multiplied matrices.
31 // It is also never empty. The top of the stack is an identity matrix when the
32 // stack is "empty" from the user's perspective.
33 mat4 matrix_stack[IMM_MAX_NUM_MATRICES];
34 int stack_pointer;
35} ImmRenderer;
36
37/// Create a new immediate mode renderer.
38bool imm_renderer_make(ImmRenderer*, GfxCore*);
39
40/// Destroy the immediate mode renderer.
41void imm_renderer_destroy(ImmRenderer*);
42
43/// Flush draw commands.
44void imm_renderer_flush(ImmRenderer*);