Files
minceraft/src/inc/program.hpp
2018-12-28 15:38:59 -05:00

43 lines
1.0 KiB
C++

#include <iostream>
#include <string>
// Load a shader program from two files. One is a vertex shader, and one is a
// fragment shader. Geometry shader support is not implemented.
GLuint mc_load_program(std::string vertex_path, std::string fragment_path)
{
GLuint shader_program = glCreateProgram();
GLuint vertex_shader = mcu_load_shader(vertex_path, GL_VERTEX_SHADER);
GLuint fragment_shader = mcu_load_shader(fragment_path, GL_FRAGMENT_SHADER);
glAttachShader(shader_program, vertex_shader);
glAttachShader(shader_program, fragment_shader);
glLinkProgram(shader_program);
GLint success = 0;
glGetProgramiv(shader_program, GL_LINK_STATUS, &success);
if (!success)
{
std::cout << "Could not link shader program loaded from \"" << vertex_path << "\" and \"" << fragment_path << "\"." << std::endl;
GLchar crash_information[4096];
glGetProgramInfoLog(shader_program, 4096, NULL, crash_information);
std::cout << crash_information;
exit(10);
}
glDeleteShader(vertex_shader);
glDeleteShader(fragment_shader);
return shader_program;
}