summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/rendering/include/engine/rendering/rendering.h9
-rw-r--r--src/rendering/src/gl.c6
-rw-r--r--src/rendering/src/rendering.c14
3 files changed, 26 insertions, 3 deletions
diff --git a/src/rendering/include/engine/rendering/rendering.h b/src/rendering/include/engine/rendering/rendering.h
index 3e11f0e..3acaedb 100644
--- a/src/rendering/include/engine/rendering/rendering.h
+++ b/src/rendering/include/engine/rendering/rendering.h
@@ -69,6 +69,9 @@ typedef struct {
u32 ibo;
/* Color (?) */
u32 col;
+
+ /* norm */
+ u32 normal;
/* MVP (a uniform from the shader) */
u32 mvp;
@@ -147,7 +150,11 @@ typedef struct {
} data;
} RenderDrawCall;
-RenderObject RenderObject_new(float* model, Shader* shader, usize sz, float* uv, usize uv_sz, u32 texture);
+RenderObject RenderObject_new(float* model,
+ Shader* shader, usize sz,
+ float* uv, usize uv_sz,
+ float* normal, usize normal_sz,
+ u32 texture);
Shader compile_shader(const char* file_path, const ShaderType shader_type);
Shader compose_shader(Shader *shaders, usize shaders_len);
diff --git a/src/rendering/src/gl.c b/src/rendering/src/gl.c
index 392ac23..327a81b 100644
--- a/src/rendering/src/gl.c
+++ b/src/rendering/src/gl.c
@@ -185,7 +185,7 @@ void shaders_delete(Shader* shader, isize shader_len) {
}
}
-RenderObject RenderObject_new(float* model, Shader* shader, usize sz, float* uv, usize uv_sz, u32 texture) {
+RenderObject RenderObject_new(float* model, Shader* shader, usize sz, float* uv, usize uv_sz, float* normal, usize normal_sz, u32 texture) {
GladGLContext *gl = GLOBAL_PLATFORM->window->context;
RenderObject o;
@@ -202,6 +202,10 @@ RenderObject RenderObject_new(float* model, Shader* shader, usize sz, float* uv,
gl->BindBuffer(GL_ARRAY_BUFFER, o.col);
gl->BufferData(GL_ARRAY_BUFFER, uv_sz, uv, GL_STATIC_DRAW);
+ gl->GenBuffers(1, &(o.normal));
+ gl->BindBuffer(GL_ARRAY_BUFFER, o.normal);
+ gl->BufferData(GL_ARRAY_BUFFER, normal_sz, normal, GL_STATIC_DRAW);
+
o.shader = *shader;
o.texture = texture;
diff --git a/src/rendering/src/rendering.c b/src/rendering/src/rendering.c
index 9e3cbe4..c00af68 100644
--- a/src/rendering/src/rendering.c
+++ b/src/rendering/src/rendering.c
@@ -108,7 +108,7 @@ void render_present(Window* w) {
(void*)0 // array buffer offset
);
- //// Do the color buffer (?)
+ //// Do the uv buffer (?)
gl->EnableVertexAttribArray(1);
gl->BindBuffer(GL_ARRAY_BUFFER, o->col);
gl->VertexAttribPointer(
@@ -120,6 +120,18 @@ void render_present(Window* w) {
(void*)0 // array buffer offset
);
+ //// Do the normal buffer (?)
+ gl->EnableVertexAttribArray(2);
+ gl->BindBuffer(GL_ARRAY_BUFFER, o->normal);
+ gl->VertexAttribPointer(
+ 2, // attribute. No particular reason for 1, but must match the layout in the shader.
+ 3, // size
+ GL_FLOAT, // type
+ GL_FALSE, // normalized?
+ 0, // stride
+ (void*)0 // array buffer offset
+ );
+
//// Draw the model !