#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; }