void Shader::setParameter(const std::string& name, float x, float y, float z, float w) { if (m_shaderProgram) { ensureGlContext(); // Enable program GLEXT_GLhandle program; glCheck(program = GLEXT_glGetHandle(GLEXT_GL_PROGRAM_OBJECT)); glCheck(GLEXT_glUseProgramObject(castToGlHandle(m_shaderProgram))); // Get parameter location and assign it new values GLint location = getParamLocation(name); if (location != -1) { glCheck(GLEXT_glUniform4f(location, x, y, z, w)); } // Disable program glCheck(GLEXT_glUseProgramObject(program)); } }
void Shader::setUniform(const std::string& name, const Glsl::Vec4& v) { UniformBinder binder(*this, name); if (binder.location != -1) glCheck(GLEXT_glUniform4f(binder.location, v.x, v.y, v.z, v.w)); }