summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
author0scar <qgt268@alumni.ku.dk>2024-02-11 14:05:51 +0000
committer0scar <qgt268@alumni.ku.dk>2024-02-11 14:05:51 +0000
commitc4e69d0d8653c59853fe53f07c07823495e5d04b (patch)
tree9ffc426e1a0b2283139de75279fe497c3b1136ea /src
parent83ef74fb576eb4a932b885da26837f31b09352b6 (diff)
Add model draw call
Diffstat (limited to 'src')
-rw-r--r--src/rendering/include/engine/rendering/rendering.h9
-rw-r--r--src/rendering/src/rendering.c18
2 files changed, 27 insertions, 0 deletions
diff --git a/src/rendering/include/engine/rendering/rendering.h b/src/rendering/include/engine/rendering/rendering.h
index 23835f2..50a61a7 100644
--- a/src/rendering/include/engine/rendering/rendering.h
+++ b/src/rendering/include/engine/rendering/rendering.h
@@ -8,6 +8,8 @@
#define GLFW_INCLUDE_NONE
#include <GLFW/glfw3.h>
+#include <cglm/cglm.h>
+
/* Definitions */
#define RGBA(_r, _g, _b, _a) \
((Engine_color){.r = _r, .g = _g, .b = _b, .a = _a})
@@ -60,12 +62,14 @@ void render(Window w);
void engine_draw_sprite(Sprite* s, v2_i32* pos, f32 scale);
void engine_draw_sprite_ex(Sprite* s, v2_i32* pos, f32 scale,
Engine_color colormod);
+void engine_draw_model(RenderObject* o, vec2 pos);
Sprite sprite_new(u64 tid, u8 coord);
typedef enum {
RenderDrawCallType_Text,
RenderDrawCallType_Sprite,
+ RenderDrawCallType_Model,
} RenderDrawCallType;
//
typedef struct {
@@ -78,6 +82,11 @@ typedef struct {
i32 y;
f32 scale;
} sprite;
+ struct {
+ RenderObject* model;
+ vec2 pos;
+ f32 scale;
+ } model;
} data;
} RenderDrawCall;
diff --git a/src/rendering/src/rendering.c b/src/rendering/src/rendering.c
index 2795c69..7fcea58 100644
--- a/src/rendering/src/rendering.c
+++ b/src/rendering/src/rendering.c
@@ -103,6 +103,24 @@ void engine_draw_sprite_ex(Sprite* s, v2_i32* pos, f32 scale,
}};
}
+void engine_draw_model(RenderObject* o, vec2 pos) {
+ if (drawcall_len + 1 >= drawcall_limit) return;
+#ifdef _DEBUG
+ if (o == NULL) __asm__("int3;");
+#endif
+ RenderDrawCall dc = {
+ .type = RenderDrawCallType_Model,
+ .data.model = {
+ .model = o,
+ .scale = 1.f,
+ }};
+
+
+ glm_vec2_copy(pos, dc.data.model.pos);
+
+ drawcalls[drawcall_len++] = dc;
+}
+
Sprite sprite_new(u64 tid, u8 coord) {
const i32 ts = 16;
// FIXME; used to be