Files
LearnOpenGL/src/shader.cpp
2025-12-06 14:53:19 +01:00

43 lines
1.2 KiB
C++
Executable File

#include "shader.hpp"
Shader::Shader(const char* vertexShaderSource, const char* fragmentShaderSource)
{
vertexShader = glCreateShader(GL_VERTEX_SHADER);
fragmentShader = glCreateShader(GL_FRAGMENT_SHADER);
shaderProgram = glCreateProgram();
addVertShader(vertexShaderSource);
addFragShader(fragmentShaderSource);
compileInProgram();
}
void Shader::addVertShader(const char* vertexShaderSource)
{
glShaderSource(vertexShader, 1, &vertexShaderSource, nullptr);
glCompileShader(vertexShader);
}
void Shader::addFragShader(const char* fragmentShaderSource)
{
glShaderSource(fragmentShader, 1, &fragmentShaderSource, nullptr);
glCompileShader(fragmentShader);
}
void Shader::compileInProgram()
{
glAttachShader(shaderProgram, vertexShader);
glAttachShader(shaderProgram, fragmentShader);
glLinkProgram(shaderProgram);
glDetachShader(shaderProgram, vertexShader);
glDetachShader(shaderProgram, fragmentShader);
glDeleteShader(vertexShader);
glDeleteShader(fragmentShader);
}
Shader::~Shader() { glDeleteProgram(shaderProgram); }
void Shader::use() const { glUseProgram(shaderProgram); }
GLuint Shader::getProgram() const { return shaderProgram; }