diff --git a/src/shader/shader.cpp b/src/shader/shader.cpp index 22c6fcf4beffd5c34e9cdcb0540e33f330f4dae8..53f8e1d3ba4bf28f8cecd58adb130a187e831412 100644 --- a/src/shader/shader.cpp +++ b/src/shader/shader.cpp @@ -30,109 +30,148 @@ void Shader::set_program_id(GLuint id) void Shader::setBool(const std::string &name, bool value) const { + activate(); glUniform1i(glGetUniformLocation(program_id, name.c_str()), (int)value); + deactivate(); } void Shader::setInt(const std::string &name, int value) const { + activate(); glUniform1i(glGetUniformLocation(program_id, name.c_str()), value); + deactivate(); } void Shader::setUInt(const std::string &name, uint32_t value) const { + activate(); glUniform1ui(glGetUniformLocation(program_id, name.c_str()), value); + deactivate(); } void Shader::setFloat(const std::string &name, float value) const { + activate(); glUniform1f(glGetUniformLocation(program_id, name.c_str()), value); + deactivate(); } void Shader::setVec2(const std::string &name, const glm::vec2 &value) const { + activate(); glUniform2fv(glGetUniformLocation(program_id, name.c_str()), 1, &value[0]); + deactivate(); } void Shader::setVec2(const std::string &name, float x, float y) const { + activate(); glUniform2f(glGetUniformLocation(program_id, name.c_str()), x, y); + deactivate(); } void Shader::setVec3(const std::string &name, const glm::vec3 &value) const { + activate(); glUniform3fv(glGetUniformLocation(program_id, name.c_str()), 1, &value[0]); + deactivate(); } void Shader::setVec3(const std::string &name, float x, float y, float z) const { + activate(); glUniform3f(glGetUniformLocation(program_id, name.c_str()), x, y, z); + deactivate(); } void Shader::setVec4(const std::string &name, const glm::vec4 &value) const { + activate(); glUniform4fv(glGetUniformLocation(program_id, name.c_str()), 1, &value[0]); + deactivate(); } void Shader::setVec4(const std::string &name, float x, float y, float z, float w) const { + activate(); glUniform4f(glGetUniformLocation(program_id, name.c_str()), x, y, z, w); + deactivate(); } void Shader::setMat2(const std::string &name, const glm::mat2 &mat) const { + activate(); glUniformMatrix2fv(glGetUniformLocation(program_id, name.c_str()), 1, GL_FALSE, &mat[0][0]); + deactivate(); } void Shader::setMat3(const std::string &name, const glm::mat3 &mat) const { + activate(); glUniformMatrix3fv(glGetUniformLocation(program_id, name.c_str()), 1, GL_FALSE, &mat[0][0]); + deactivate(); } void Shader::setMat4(const std::string &name, const glm::mat4 &mat) const { + activate(); glUniformMatrix4fv(glGetUniformLocation(program_id, name.c_str()), 1, GL_FALSE, &mat[0][0]); + deactivate(); } void Shader::setUVec2(const std::string &name, const glm::uvec2 &value) const { + activate(); glUniform2uiv(glGetUniformLocation(program_id, name.c_str()), 1, &value[0]); + deactivate(); } void Shader::setUVec3(const std::string &name, const glm::uvec3 &value) const { + activate(); glUniform3uiv(glGetUniformLocation(program_id, name.c_str()), 1, &value[0]); + deactivate(); } void Shader::setUVec4(const std::string &name, const glm::uvec4 &value) const { + activate(); glUniform4uiv(glGetUniformLocation(program_id, name.c_str()), 1, &value[0]); + deactivate(); } void Shader::setUVec2(const std::string &name, uint32_t x, uint32_t y) const { + activate(); glUniform2ui(glGetUniformLocation(program_id, name.c_str()), x, y); + deactivate(); } void Shader::setUVec3(const std::string &name, uint32_t x, uint32_t y, uint32_t z) const { + activate(); glUniform3ui(glGetUniformLocation(program_id, name.c_str()), x, y, z); + deactivate(); } void Shader::setUVec4(const std::string &name, uint32_t x, uint32_t y, uint32_t z, uint32_t w) const { + activate(); glUniform4ui(glGetUniformLocation(program_id, name.c_str()), x, y, z, w); + deactivate(); } void Shader::setFloatArray( const std::string &name, const float array[], int count) const { + activate(); glUniform1fv(glGetUniformLocation(program_id, name.c_str()), count, array); + deactivate(); } - } // namespace scigl_render