Refactor setting shader uniform block binding point to method
This commit is contained in:
parent
e8f4f4ae12
commit
0e43f07d80
21
src/main.cc
21
src/main.cc
@ -68,6 +68,7 @@ class Shader {
|
||||
void set_vec4(const char *name, glm::vec4 vector);
|
||||
void set_mat3(const char *name, glm::mat3 matrix);
|
||||
void set_mat4(const char *name, glm::mat4 matrix);
|
||||
void set_uniform_block_binding_point(const char *block_name, GLuint binding_point);
|
||||
GLuint program;
|
||||
private:
|
||||
void link_program(GLuint vert, GLuint frag);
|
||||
@ -370,16 +371,11 @@ int main() {
|
||||
glBindBufferBase(GL_UNIFORM_BUFFER, ubo_binding_point, ubo);
|
||||
|
||||
// Set the shaders binding points
|
||||
GLuint main_shader_common_block_index = glGetUniformBlockIndex(main_shader.program, "Common");
|
||||
GLuint light_shader_common_block_index = glGetUniformBlockIndex(light_shader.program, "Common");
|
||||
GLuint skybox_shader_common_block_index = glGetUniformBlockIndex(skybox_shader.program, "Common");
|
||||
GLuint reflective_shader_common_block_index = glGetUniformBlockIndex(reflective_shader.program, "Common");
|
||||
GLuint refractive_shader_common_block_index = glGetUniformBlockIndex(refractive_shader.program, "Common");
|
||||
glUniformBlockBinding(main_shader.program, main_shader_common_block_index, ubo_binding_point);
|
||||
glUniformBlockBinding(light_shader.program, light_shader_common_block_index, ubo_binding_point);
|
||||
glUniformBlockBinding(skybox_shader.program, skybox_shader_common_block_index, ubo_binding_point);
|
||||
glUniformBlockBinding(reflective_shader.program, reflective_shader_common_block_index, ubo_binding_point);
|
||||
glUniformBlockBinding(refractive_shader.program, refractive_shader_common_block_index, ubo_binding_point);
|
||||
main_shader.set_uniform_block_binding_point("Common", ubo_binding_point);
|
||||
light_shader.set_uniform_block_binding_point("Common", ubo_binding_point);
|
||||
skybox_shader.set_uniform_block_binding_point("Common", ubo_binding_point);
|
||||
reflective_shader.set_uniform_block_binding_point("Common", ubo_binding_point);
|
||||
refractive_shader.set_uniform_block_binding_point("Common", ubo_binding_point);
|
||||
|
||||
// Add projection matrix to uniform buffer
|
||||
glBufferSubData(GL_UNIFORM_BUFFER, 0, sizeof(glm::mat4), glm::value_ptr(projection));
|
||||
@ -603,6 +599,11 @@ void Shader::set_mat4(const char *name, glm::mat4 matrix) {
|
||||
glUniformMatrix4fv(glGetUniformLocation(program, name), 1, GL_FALSE, glm::value_ptr(matrix));
|
||||
}
|
||||
|
||||
void Shader::set_uniform_block_binding_point(const char *block_name, GLuint binding_point) {
|
||||
GLuint block_index = glGetUniformBlockIndex(program, block_name);
|
||||
glUniformBlockBinding(program, block_index, binding_point);
|
||||
}
|
||||
|
||||
void Shader::link_program(GLuint vert, GLuint frag) {
|
||||
program = glCreateProgram();
|
||||
glAttachShader(program, vert);
|
||||
|
Loading…
Reference in New Issue
Block a user