From 3cfe2117952983f5663fe06291d343b94f9b5672 Mon Sep 17 00:00:00 2001 From: 0scar Date: Sat, 2 Mar 2024 22:49:29 +0100 Subject: Use the vertex array object --- src/rendering/include/engine/rendering/rendering.h | 33 +++++++++++++--------- 1 file changed, 19 insertions(+), 14 deletions(-) (limited to 'src/rendering/include') diff --git a/src/rendering/include/engine/rendering/rendering.h b/src/rendering/include/engine/rendering/rendering.h index 3acaedb..d6311de 100644 --- a/src/rendering/include/engine/rendering/rendering.h +++ b/src/rendering/include/engine/rendering/rendering.h @@ -58,24 +58,28 @@ typedef struct { u32 program; } Shader; +typedef struct { + // Maybe also define type? so texture normals can be mapped to a texture + // atlas? + u32 buffername; + isize sz; + isize n; + isize m; + void* data; +} ShaderBuffer; + typedef struct { /* Shader proram */ Shader shader; /* Vertex Array Object */ u32 vao; - /* Vertex Buffer Object */ - u32 vbo; - /* Index Buffer Object */ - u32 ibo; - /* Color (?) */ - u32 col; - - /* norm */ - u32 normal; + /* MVP (a uniform from the shader) */ u32 mvp; u32 texture; + usize buffer_len; + ShaderBuffer* buffer; } RenderObject; typedef enum { @@ -150,11 +154,12 @@ typedef struct { } data; } RenderDrawCall; -RenderObject RenderObject_new(float* model, - Shader* shader, usize sz, - float* uv, usize uv_sz, - float* normal, usize normal_sz, - u32 texture); +// TODO make all the shader buffers a list + +RenderObject RenderObject_new( + Shader* shader, + u32 texture, + ShaderBuffer *restrict buffers, usize num_buffers); Shader compile_shader(const char* file_path, const ShaderType shader_type); Shader compose_shader(Shader *shaders, usize shaders_len); -- cgit v1.3