Files
rez_demo/GL_STUFF/SOURCES/SCENE/ShadingHelper.cpp

41 lines
1.6 KiB
C++
Executable File

#include "../../HEADERS/SCENE/ShadingHelper.h"
#include <glm/gtc/type_ptr.hpp>
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));
}