Skip to content
Snippets Groups Projects
Commit c3c25098 authored by Tim Übelhör's avatar Tim Übelhör
Browse files

fixed setting uniforms in shader program

parent a9886304
No related branches found
No related tags found
No related merge requests found
...@@ -90,7 +90,7 @@ void process_input(GLFWwindow *window, ...@@ -90,7 +90,7 @@ void process_input(GLFWwindow *window,
glfwSetWindowShouldClose(window, true); glfwSetWindowShouldClose(window, true);
} }
// movement // movement
float cameraSpeed = 0.001; float cameraSpeed = 0.005;
if (glfwGetKey(window, GLFW_KEY_W) == GLFW_PRESS) if (glfwGetKey(window, GLFW_KEY_W) == GLFW_PRESS)
{ {
camera_pose.position.y += cameraSpeed; camera_pose.position.y += cameraSpeed;
......
...@@ -46,6 +46,7 @@ void DepthSimulator::render_pose(const QuaternionPose &object_pose, ...@@ -46,6 +46,7 @@ void DepthSimulator::render_pose(const QuaternionPose &object_pose,
camera.pose = camera_pose; camera.pose = camera_pose;
camera.set_in_shader(depth_shader); camera.set_in_shader(depth_shader);
model.pose = object_pose; model.pose = object_pose;
depth_shader.activate();
model.draw(depth_shader); model.draw(depth_shader);
} }
} // namespace scigl_render } // namespace scigl_render
\ No newline at end of file
...@@ -16,15 +16,15 @@ void OnscreenRender::next_frame( ...@@ -16,15 +16,15 @@ void OnscreenRender::next_frame(
GLContext &gl_context, const CvCamera &camera, GLContext &gl_context, const CvCamera &camera,
const Model &model, const DiffuseLight &light) const Model &model, const DiffuseLight &light)
{ {
shader.activate();
glClearColor(0, 0, 0, 0); glClearColor(0, 0, 0, 0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glEnable(GL_DEPTH_TEST); glEnable(GL_DEPTH_TEST);
camera.set_in_shader(shader); camera.set_in_shader(shader);
light.set_in_shader(shader); light.set_in_shader(shader);
shader.activate();
model.draw(shader); model.draw(shader);
shader.deactivate();
glfwSwapBuffers(gl_context.get_window()); glfwSwapBuffers(gl_context.get_window());
check_gl_error("rendered next frame"); check_gl_error("rendered next frame");
} }
......
...@@ -77,7 +77,6 @@ void CvCamera::resize_intrinsics(int width, int height) ...@@ -77,7 +77,6 @@ void CvCamera::resize_intrinsics(int width, int height)
void CvCamera::set_in_shader(const Shader &shader) const void CvCamera::set_in_shader(const Shader &shader) const
{ {
shader.activate();
shader.setVec3("camera_position", this->pose.position); shader.setVec3("camera_position", this->pose.position);
shader.setFloatArray("dist_coeffs", this->intrinsics.dist_coeffs, shader.setFloatArray("dist_coeffs", this->intrinsics.dist_coeffs,
sizeof(this->intrinsics.dist_coeffs)); sizeof(this->intrinsics.dist_coeffs));
......
...@@ -2,7 +2,6 @@ ...@@ -2,7 +2,6 @@
void scigl_render::DiffuseLight::set_in_shader(const Shader &shader) const void scigl_render::DiffuseLight::set_in_shader(const Shader &shader) const
{ {
shader.activate();
shader.setVec3("light_position", position); shader.setVec3("light_position", position);
shader.setVec3("light_color", color); shader.setVec3("light_color", color);
} }
\ No newline at end of file
...@@ -131,7 +131,6 @@ void Mesh::init() ...@@ -131,7 +131,6 @@ void Mesh::init()
void Mesh::draw(const Shader &shader) const void Mesh::draw(const Shader &shader) const
{ {
shader.activate();
shader.setVec3("material.ambient", material.ambient); shader.setVec3("material.ambient", material.ambient);
shader.setVec3("material.diffuse", material.diffuse); shader.setVec3("material.diffuse", material.diffuse);
shader.setVec3("material.specular", material.specular); shader.setVec3("material.specular", material.specular);
...@@ -139,6 +138,7 @@ void Mesh::draw(const Shader &shader) const ...@@ -139,6 +138,7 @@ void Mesh::draw(const Shader &shader) const
// Shader shall sample form texture0 // Shader shall sample form texture0
shader.setInt("texture0", 0); shader.setInt("texture0", 0);
shader.setFloat("diffuse_texture_strength", texture.strength); shader.setFloat("diffuse_texture_strength", texture.strength);
shader.activate();
glActiveTexture(GL_TEXTURE0); glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, texture.id); glBindTexture(GL_TEXTURE_2D, texture.id);
// draw the vertex array // draw the vertex array
......
...@@ -30,148 +30,139 @@ void Shader::set_program_id(GLuint id) ...@@ -30,148 +30,139 @@ void Shader::set_program_id(GLuint id)
void Shader::setBool(const std::string &name, bool value) const void Shader::setBool(const std::string &name, bool value) const
{ {
activate(); glProgramUniform1i(program_id,
glUniform1i(glGetUniformLocation(program_id, name.c_str()), (int)value); glGetUniformLocation(program_id, name.c_str()),
deactivate(); (int)value);
} }
void Shader::setInt(const std::string &name, int value) const void Shader::setInt(const std::string &name, int value) const
{ {
activate(); glProgramUniform1i(program_id,
glUniform1i(glGetUniformLocation(program_id, name.c_str()), value); glGetUniformLocation(program_id, name.c_str()),
deactivate(); value);
} }
void Shader::setUInt(const std::string &name, uint32_t value) const void Shader::setUInt(const std::string &name, uint32_t value) const
{ {
activate(); glProgramUniform1ui(program_id,
glUniform1ui(glGetUniformLocation(program_id, name.c_str()), value); glGetUniformLocation(program_id, name.c_str()), value);
deactivate();
} }
void Shader::setFloat(const std::string &name, float value) const void Shader::setFloat(const std::string &name, float value) const
{ {
activate(); glProgramUniform1f(program_id,
glUniform1f(glGetUniformLocation(program_id, name.c_str()), value); glGetUniformLocation(program_id, name.c_str()), value);
deactivate();
} }
void Shader::setVec2(const std::string &name, const glm::vec2 &value) const void Shader::setVec2(const std::string &name, const glm::vec2 &value) const
{ {
activate(); glProgramUniform2fv(program_id,
glUniform2fv(glGetUniformLocation(program_id, name.c_str()), 1, &value[0]); glGetUniformLocation(program_id, name.c_str()),
deactivate(); 1, &value[0]);
} }
void Shader::setVec2(const std::string &name, float x, float y) const void Shader::setVec2(const std::string &name, float x, float y) const
{ {
activate(); glProgramUniform2f(program_id,
glUniform2f(glGetUniformLocation(program_id, name.c_str()), x, y); glGetUniformLocation(program_id, name.c_str()), x, y);
deactivate();
} }
void Shader::setVec3(const std::string &name, const glm::vec3 &value) const void Shader::setVec3(const std::string &name, const glm::vec3 &value) const
{ {
activate(); glProgramUniform3fv(program_id,
glUniform3fv(glGetUniformLocation(program_id, name.c_str()), 1, &value[0]); glGetUniformLocation(program_id, name.c_str()),
deactivate(); 1, &value[0]);
} }
void Shader::setVec3(const std::string &name, float x, float y, float z) const void Shader::setVec3(const std::string &name, float x, float y, float z) const
{ {
activate(); glProgramUniform3f(program_id,
glUniform3f(glGetUniformLocation(program_id, name.c_str()), x, y, z); glGetUniformLocation(program_id, name.c_str()), x, y, z);
deactivate();
} }
void Shader::setVec4(const std::string &name, const glm::vec4 &value) const void Shader::setVec4(const std::string &name, const glm::vec4 &value) const
{ {
activate(); glProgramUniform4fv(program_id,
glUniform4fv(glGetUniformLocation(program_id, name.c_str()), 1, &value[0]); glGetUniformLocation(program_id, name.c_str()),
deactivate(); 1, &value[0]);
} }
void Shader::setVec4(const std::string &name, float x, float y, float z, void Shader::setVec4(const std::string &name, float x, float y, float z,
float w) const float w) const
{ {
activate(); glProgramUniform4f(program_id,
glUniform4f(glGetUniformLocation(program_id, name.c_str()), x, y, z, w); glGetUniformLocation(program_id, name.c_str()),
deactivate(); x, y, z, w);
} }
void Shader::setMat2(const std::string &name, const glm::mat2 &mat) const void Shader::setMat2(const std::string &name, const glm::mat2 &mat) const
{ {
activate(); glProgramUniformMatrix2fv(program_id,
glUniformMatrix2fv(glGetUniformLocation(program_id, name.c_str()), 1, glGetUniformLocation(program_id, name.c_str()), 1,
GL_FALSE, &mat[0][0]); GL_FALSE, &mat[0][0]);
deactivate();
} }
void Shader::setMat3(const std::string &name, const glm::mat3 &mat) const void Shader::setMat3(const std::string &name, const glm::mat3 &mat) const
{ {
activate(); glProgramUniformMatrix3fv(program_id,
glUniformMatrix3fv(glGetUniformLocation(program_id, name.c_str()), 1, glGetUniformLocation(program_id, name.c_str()), 1,
GL_FALSE, &mat[0][0]); GL_FALSE, &mat[0][0]);
deactivate();
} }
void Shader::setMat4(const std::string &name, const glm::mat4 &mat) const void Shader::setMat4(const std::string &name, const glm::mat4 &mat) const
{ {
activate(); glProgramUniformMatrix4fv(program_id,
glUniformMatrix4fv(glGetUniformLocation(program_id, name.c_str()), 1, glGetUniformLocation(program_id, name.c_str()), 1,
GL_FALSE, &mat[0][0]); GL_FALSE, &mat[0][0]);
deactivate();
} }
void Shader::setUVec2(const std::string &name, const glm::uvec2 &value) const void Shader::setUVec2(const std::string &name, const glm::uvec2 &value) const
{ {
activate(); glProgramUniform2uiv(program_id,
glUniform2uiv(glGetUniformLocation(program_id, name.c_str()), 1, &value[0]); glGetUniformLocation(program_id, name.c_str()),
deactivate(); 1, &value[0]);
} }
void Shader::setUVec3(const std::string &name, const glm::uvec3 &value) const void Shader::setUVec3(const std::string &name, const glm::uvec3 &value) const
{ {
activate(); glProgramUniform3uiv(program_id,
glUniform3uiv(glGetUniformLocation(program_id, name.c_str()), 1, &value[0]); glGetUniformLocation(program_id, name.c_str()),
deactivate(); 1, &value[0]);
} }
void Shader::setUVec4(const std::string &name, const glm::uvec4 &value) const void Shader::setUVec4(const std::string &name, const glm::uvec4 &value) const
{ {
activate(); glProgramUniform4uiv(program_id,
glUniform4uiv(glGetUniformLocation(program_id, name.c_str()), 1, &value[0]); glGetUniformLocation(program_id, name.c_str()),
deactivate(); 1, &value[0]);
} }
void Shader::setUVec2(const std::string &name, uint32_t x, uint32_t y) const void Shader::setUVec2(const std::string &name, uint32_t x, uint32_t y) const
{ {
activate(); glProgramUniform2ui(program_id,
glUniform2ui(glGetUniformLocation(program_id, name.c_str()), x, y); glGetUniformLocation(program_id, name.c_str()), x, y);
deactivate();
} }
void Shader::setUVec3(const std::string &name, void Shader::setUVec3(const std::string &name,
uint32_t x, uint32_t y, uint32_t z) const uint32_t x, uint32_t y, uint32_t z) const
{ {
activate(); glProgramUniform3ui(program_id,
glUniform3ui(glGetUniformLocation(program_id, name.c_str()), x, y, z); glGetUniformLocation(program_id, name.c_str()), x, y, z);
deactivate();
} }
void Shader::setUVec4(const std::string &name, void Shader::setUVec4(const std::string &name,
uint32_t x, uint32_t y, uint32_t z, uint32_t w) const uint32_t x, uint32_t y, uint32_t z, uint32_t w) const
{ {
activate(); glProgramUniform4ui(program_id,
glUniform4ui(glGetUniformLocation(program_id, name.c_str()), x, y, z, w); glGetUniformLocation(program_id, name.c_str()),
deactivate(); x, y, z, w);
} }
void Shader::setFloatArray( void Shader::setFloatArray(
const std::string &name, const float array[], int count) const const std::string &name, const float array[], int count) const
{ {
activate(); glProgramUniform1fv(program_id,
glUniform1fv(glGetUniformLocation(program_id, name.c_str()), count, array); glGetUniformLocation(program_id, name.c_str()),
deactivate(); count, array);
} }
} // namespace scigl_render } // namespace scigl_render
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment