15 * You should have received a copy of the GNU General Public License |
15 * You should have received a copy of the GNU General Public License |
16 * along with this program. If not, see <http://www.gnu.org/licenses/>. |
16 * along with this program. If not, see <http://www.gnu.org/licenses/>. |
17 */ |
17 */ |
18 |
18 |
19 #pragma once |
19 #pragma once |
|
20 #include <GL/glew.h> |
20 #include <glm/gtc/type_ptr.hpp> |
21 #include <glm/gtc/type_ptr.hpp> |
21 #include <QOpenGLVertexArrayObject> |
22 #include <QOpenGLVertexArrayObject> |
22 #include <QOpenGLBuffer> |
23 #include <QOpenGLBuffer> |
23 #include <QOpenGLShaderProgram> |
24 #include <QOpenGLShaderProgram> |
24 #include "src/basics.h" |
25 #include "src/basics.h" |
87 void setShaderUniform(gl::ModelShaders* shaders, const char* uniformName, Ts&&... args) |
88 void setShaderUniform(gl::ModelShaders* shaders, const char* uniformName, Ts&&... args) |
88 { |
89 { |
89 for (gl::ModelShaders::ShaderObject& shader : shaders->shaderObjects) |
90 for (gl::ModelShaders::ShaderObject& shader : shaders->shaderObjects) |
90 { |
91 { |
91 shader.program->bind(); |
92 shader.program->bind(); |
92 const int location = glfunc().glGetUniformLocation(shader.program->programId(), uniformName); |
93 const int location = glGetUniformLocation(shader.program->programId(), uniformName); |
93 if (location != -1) { |
94 if (location != -1) { |
94 shader.program->setUniformValue(location, std::forward<Ts>(args)...); |
95 shader.program->setUniformValue(location, std::forward<Ts>(args)...); |
95 } |
96 } |
96 shader.program->release(); |
97 shader.program->release(); |
97 } |
98 } |