3 This file is part of libmspgl
4 Copyright © 2007 Mikko Rasa, Mikkosoft Productions
5 Distributed under the LGPL
8 #define GL_GLEXT_PROTOTYPES
27 void Program::attach_shader(Shader &shader)
29 if(find(shaders.begin(), shaders.end(), &shader)==shaders.end())
31 glAttachShader(id, shader.get_id());
32 shaders.push_back(&shader);
36 void Program::detach_shader(Shader &shader)
38 list<Shader *>::iterator i=remove(shaders.begin(), shaders.end(), &shader);
41 shaders.erase(i, shaders.end());
42 glDetachShader(id, shader.get_id());
48 for(list<Shader *>::iterator i=shaders.begin(); i!=shaders.end(); ++i)
49 if(!(*i)->get_compiled() && !(*i)->compile())
53 linked=get_param(GL_LINK_STATUS);
57 int Program::get_param(GLenum param) const
60 glGetProgramiv(id, param, &value);
64 string Program::get_info_log() const
66 sizei len=get_param(GL_INFO_LOG_LENGTH);
68 glGetProgramInfoLog(id, len+1, reinterpret_cast<GLsizei *>(&len), log);
69 return string(log, len);