| 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 } |