diff options
Diffstat (limited to 'src/rendering')
| -rw-r--r-- | src/rendering/include/engine/rendering/rendering.h | 9 | ||||
| -rw-r--r-- | src/rendering/src/rendering.c | 18 |
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 |
