33 std::string read(
const char *filename )
35 std::stringbuf source;
36 std::ifstream in(filename);
38 if(in.good() ==
false)
39 printf(
"[error] loading program '%s'...\n", filename);
41 printf(
"loading program '%s'...\n", filename);
55 GLuint fragment_shader;
70 glGenVertexArrays(1, &vao);
73 std::string vertex_source= read(
"tutos/tuto2GL_vertex.glsl");
75 vertex_shader= glCreateShader(GL_VERTEX_SHADER);
78 const char *vertex_strings[]= { vertex_source.c_str() };
79 glShaderSource(vertex_shader, 1, vertex_strings, NULL);
81 glCompileShader(vertex_shader);
84 std::string fragment_source= read(
"tutos/tuto2GL_fragment.glsl");
85 fragment_shader= glCreateShader(GL_FRAGMENT_SHADER);
86 const char *fragment_strings[]= { fragment_source.c_str() };
87 glShaderSource(fragment_shader, 1, fragment_strings, NULL);
88 glCompileShader(fragment_shader);
91 program= glCreateProgram();
93 glAttachShader(program, vertex_shader);
94 glAttachShader(program, fragment_shader);
96 glLinkProgram(program);
107 glGetProgramiv(program, GL_LINK_STATUS, &status);
108 if(status == GL_FALSE)
109 printf(
"[error] linking pogram...\n");
112 if(status == GL_TRUE)
122 glDeleteShader(vertex_shader);
123 glDeleteShader(fragment_shader);
124 glDeleteProgram(program);
130 glDeleteVertexArrays(1, &vao);
138 glClearColor(0.2, 0.2, 0.2, 1);
139 glClear(GL_COLOR_BUFFER_BIT);
142 glUseProgram(program);
145 glBindVertexArray(vao);
148 glDrawArrays(GL_TRIANGLES, 0, 3);
154 int main(
int argc,
char **argv )
App(const int width, const int height, const int major=3, const int minor=3, const int samples=0)
constructeur, dimensions de la fenetre et version d'openGL.
int run()
execution de l'application.
void printf(Text &text, const int px, const int py, const char *format,...)
affiche un texte a la position x, y. meme utilisation que printf().
int quit()
a deriver pour detruire les objets openGL. renvoie -1 pour indiquer une erreur, 0 sinon.
int render()
a deriver pour afficher les objets. renvoie 1 pour continuer, 0 pour fermer l'application.
int init()
a deriver pour creer les objets openGL. renvoie -1 pour indiquer une erreur, 0 sinon.