41 lines
1.6 KiB
C++
41 lines
1.6 KiB
C++
|
|
#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));
|
||
|
|
}
|