|
|
|
@ -331,13 +331,14 @@ drawRenderObject(render_group* rg, render_object* ro, |
|
|
|
glBindBuffer(GL_ARRAY_BUFFER, ro->normal_buffer.buffer_id); |
|
|
|
glBindBuffer(GL_ARRAY_BUFFER, ro->normal_buffer.buffer_id); |
|
|
|
glVertexAttribPointer(2, 3, GL_FLOAT, GL_FALSE, 0, (void*) 0); |
|
|
|
glVertexAttribPointer(2, 3, GL_FLOAT, GL_FALSE, 0, (void*) 0); |
|
|
|
|
|
|
|
|
|
|
|
// TODO: testing lighting
|
|
|
|
glm::mat3 normal_matrix = glm::transpose(glm::inverse(glm::mat3(model_matrix))); |
|
|
|
|
|
|
|
glUniformMatrix3fv(rg->shader.normal_matrix_id, 1, GL_FALSE, &normal_matrix[0][0]); |
|
|
|
|
|
|
|
|
|
|
|
// TODO: use Uniform Buffer Objects to update light data
|
|
|
|
// TODO: use Uniform Buffer Objects to update light data
|
|
|
|
// https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_uniform_buffer_object.txt
|
|
|
|
// https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_uniform_buffer_object.txt
|
|
|
|
// https://www.khronos.org/opengl/wiki/Uniform_Buffer_Objects
|
|
|
|
// https://www.khronos.org/opengl/wiki/Uniform_Buffer_Objects
|
|
|
|
|
|
|
|
|
|
|
|
glm::mat3 normal_matrix = glm::transpose(glm::inverse(glm::mat3(model_matrix))); |
|
|
|
glUniform1ui(rg->shader.num_lights_id, num_lights); |
|
|
|
glUniformMatrix3fv(rg->shader.normal_matrix_id, 1, GL_FALSE, &normal_matrix[0][0]); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (uint i = 0; i < num_lights; i++) { |
|
|
|
for (uint i = 0; i < num_lights; i++) { |
|
|
|
// TODO: don't do this every frame * every render_group
|
|
|
|
// TODO: don't do this every frame * every render_group
|
|
|
|
|