void TheMaze2::initShaders() { GLuint vertex_shader = shaderFromFile("shaders/vertex.glsl", GL_VERTEX_SHADER); GLuint frag_shader = shaderFromFile("shaders/fragment.glsl", GL_FRAGMENT_SHADER); if (vertex_shader == 0 || frag_shader == 0) { // TODO: thow something meaningful throw "shader error"; } shader_prog_ = glCreateProgram(); glAttachShader(shader_prog_, vertex_shader); glAttachShader(shader_prog_, frag_shader); glBindFragDataLocation(shader_prog_, 0, "out_color"); glLinkProgram(shader_prog_); glUseProgram(shader_prog_); }
Shader* ContentManager::loadShader( const char* vertPath, const char* fragShader ) { Shader* result; std::string s = std::string(vertPath).append( fragShader ); // check if key is present if (shaders.find(s) != shaders.end()) result = shaders[s]; else { result = Shader::nextFreeShader(); result->shaderProgramID = shaderFromFile( vertPath, fragShader ); shaders[s] = result; } return result; }