#include "ShadingHelper.h" #include ShadingHelper::ShadingHelper(GLuint program) { this->program = program; } void ShadingHelper::useProgram() { glUseProgram(program); } GLuint ShadingHelper::getProgram() { return program; } void ShadingHelper::bindTexture2D(GLuint texUnitIndex, GLuint texture, std::string uniform) { glActiveTexture(GL_TEXTURE0 + texUnitIndex); glBindTexture(GL_TEXTURE_2D, texture); glUniform1i(glGetUniformLocation(program, &uniform[0]), texUnitIndex); } void ShadingHelper::bindViewUniforms(glm::mat4 projection, glm::mat4 view) { GLint projectionUniform = glGetUniformLocation(program, "Projection"); glUniformMatrix4fv(projectionUniform, 1, GL_FALSE, value_ptr(projection)); GLint viewUniform = glGetUniformLocation(program, "View"); glUniformMatrix4fv(viewUniform, 1, GL_FALSE, value_ptr(view)); } void ShadingHelper::bindLightUniforms(glm::vec3 lightPos, glm::vec3 lightCol, glm::vec3 eyePos) { glUniform3f(glGetUniformLocation(program, "lightPos"), lightPos.x, lightPos.y, lightPos.z); glUniform3f(glGetUniformLocation(program, "lightCol"), lightCol.x, lightCol.y, lightCol.z); glUniform3f(glGetUniformLocation(program, "eyePos"), eyePos.x, eyePos.y, eyePos.z); } void ShadingHelper::bindModelUniforms(glm::mat4 locRotScl, glm::mat4 rotScl) { GLint localTransformUniform = glGetUniformLocation(program, "Model"); glUniformMatrix4fv(localTransformUniform, 1, GL_FALSE, value_ptr(locRotScl)); GLint onlyRotationUniform = glGetUniformLocation(program, "ModelRot"); glUniformMatrix4fv(onlyRotationUniform, 1, GL_FALSE, value_ptr(rotScl)); }