diff options
Diffstat (limited to 'src/rendering')
| -rw-r--r-- | src/rendering/CMakeLists.txt | 15 | ||||
| -rw-r--r-- | src/rendering/include/engine/rendering/rendering.h | 101 |
2 files changed, 112 insertions, 4 deletions
diff --git a/src/rendering/CMakeLists.txt b/src/rendering/CMakeLists.txt index a7313e9..e04d858 100644 --- a/src/rendering/CMakeLists.txt +++ b/src/rendering/CMakeLists.txt @@ -1,6 +1,13 @@ add_library(daw_rendering - gl.c - rendering.c - text.c - window.c + src/gl.c + src/rendering.c + src/text.c + src/window.c + ) + +target_include_directories(daw_rendering PRIVATE include) +target_link_libraries(daw_rendering PRIVATE + OpenGL::GL + cglm + glfw ) diff --git a/src/rendering/include/engine/rendering/rendering.h b/src/rendering/include/engine/rendering/rendering.h new file mode 100644 index 0000000..ff24412 --- /dev/null +++ b/src/rendering/include/engine/rendering/rendering.h @@ -0,0 +1,101 @@ +#ifndef RENDERING_H +#define RENDERING_H + +#include "types.h" +#include "vector.h" + +#define GLFW_INCLUDE_NONE +#include <GLFW/glfw3.h> + +/* Definitions */ +#define RGBA(_r, _g, _b, _a) \ + ((Engine_color){.r = _r, .g = _g, .b = _b, .a = _a}) +#define RGB(_r, _g, _b) RGBA(_r, _g, _b, 0xFF) + +/* Types */ +typedef struct { + u8 r; + u8 g; + u8 b; + u8 a; +} Engine_color; + +typedef struct { + u32 texture_id; + v2_i32 coord; +} Sprite; + + +#include "engine.h" +#include "ui.h" + +/* Rendering functions */ +void render_begin(Window* w); +void render_present(Window* w); +void drawcall_reset(void); +void render(Window* w); + +/* Misc */ +void window_size_callback(GLFWwindow* window, i32 width, i32 height); +void engine_window_resize_pointers(i32* w, i32* h); +void engine_window_resize_pointers_reset(void); + +/* UI rendering */ +/* See rendering_ui.c for implementation */ +i64 engine_render_text(i32 font_id, Engine_color fg, char* text, + v2_i32* size_out, bool wrapped); +void engine_draw_uitree(UITree* t); +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); + +Sprite sprite_new(u64 tid, u8 coord); + +#ifdef ENGINE_INTERNALS +#include "engine.h" + +//#include <glad/gl.h> +//#define GLFW_INCLUDE_NONE +//#include <GLFW/glfw3.h> + +#define TEXTURES_INCREMENT 512 + +typedef enum { + RenderDrawCallType_UITree, + /*RenderDrawCallType_UIButton,*/ + RenderDrawCallType_Text, + RenderDrawCallType_Sprite, +} RenderDrawCallType; + +typedef struct { + RenderDrawCallType type; + union { + void* data; + struct { + Sprite* sprite; + i32 x; + i32 y; + f32 scale; + } sprite; + } data; +} RenderDrawCall; + +struct RenderObject { + u32 vao; + u32 vbo; + u32 col; + u32 shaderprogram; + f32 g_vertex_buffer_data[9]; +}; + +void render_uitree(Window* w, UITree* t); + +void render_container(Window* w, UITree_container* t); +void render_button(Window* w, UITree_button* t); +void render_title(Window* w, UITree_title* t); +void render_text(Window* w, UITree_text* t); +v2_i32 elem_size(UITree* root); + +#endif + +#endif |
