mirror of
https://github.com/guezoloic/LearnOpenGL.git
synced 2026-03-28 18:03:44 +00:00
43 lines
1.2 KiB
C++
Executable File
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; } |