Files
2026-06-08 17:07:34 -04:00

58 lines
1.3 KiB
C++

#include "shaderClass.h"
#include "VBO.h"
Shader::Shader(const char* vertexFile, const char* fragFile)
{
std::string vertexCode = get_file_contents(vertexFile);
std::string fragCode = get_file_contents(fragFile);
const char* vertexSource = vertexCode.c_str();
const char* fragSource = fragCode.c_str();
unsigned int vertexShader;
vertexShader = glCreateShader(GL_VERTEX_SHADER);
glShaderSource(vertexShader, 1, &vertexSource, NULL);
glCompileShader(vertexShader);
unsigned int fragmentShader;
fragmentShader = glCreateShader(GL_FRAGMENT_SHADER);
glShaderSource(fragmentShader, 1, &fragSource, NULL);
glCompileShader(fragmentShader);
ID = glCreateProgram();
glAttachShader(ID, vertexShader);
glAttachShader(ID, fragmentShader);
glLinkProgram(ID);
glDeleteShader(vertexShader);
glDeleteShader(fragmentShader);
}
void Shader::Activate()
{
glUseProgram(ID);
}
void Shader::Delete()
{
glDeleteProgram(ID);
}
std::string get_file_contents(const char* filename)
{
std::ifstream in(filename, std::ios::binary);
if (in) {
std::string contents;
in.seekg(0, std::ios::end);
contents.resize(in.tellg());
in.seekg(0, std::ios::beg);
in.read(&contents[0], contents.size());
in.close();
return contents;
}
std::cout << "GETTING SHADER FILE CONTENTS FAILED\n";
throw errno;
}