gKit2 light
Public Member Functions | Public Attributes | List of all members
Tuto2GL Struct Reference
+ Inheritance diagram for Tuto2GL:

Public Member Functions

int init ()
 a deriver pour creer les objets openGL. renvoie -1 pour indiquer une erreur, 0 sinon. More...
 
int quit ()
 a deriver pour detruire les objets openGL. renvoie -1 pour indiquer une erreur, 0 sinon. More...
 
int render ()
 a deriver pour afficher les objets. renvoie 1 pour continuer, 0 pour fermer l'application. More...
 
- Public Member Functions inherited from App
 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. More...
 
virtual int update (const float time, const float delta)
 a deriver et redefinir pour animer les objets en fonction du temps. More...
 
int run ()
 execution de l'application. More...
 

Public Attributes

GLuint vertex_shader
 
GLuint fragment_shader
 
GLuint program
 
GLuint vao
 

Additional Inherited Members

- Protected Member Functions inherited from App
virtual int prerender ()
 
virtual int postrender ()
 
void vsync_off ()
 
- Protected Attributes inherited from App
Window m_window
 
Context m_context
 
bool sync
 

Detailed Description

Definition at line 50 of file tuto2GL_app.cpp.

Member Function Documentation

◆ init()

int Tuto2GL::init ( )
inlinevirtual

a deriver pour creer les objets openGL. renvoie -1 pour indiquer une erreur, 0 sinon.

Implements App.

Definition at line 67 of file tuto2GL_app.cpp.

68  {
69  // creer un objet openGL : vertex array object
70  glGenVertexArrays(1, &vao);
71 
72  // charger le source du vertex shader
73  std::string vertex_source= read("tutos/tuto2GL_vertex.glsl");
74  // creer un objet openGL : vertex shader
75  vertex_shader= glCreateShader(GL_VERTEX_SHADER);
76 
77  // preparer les chaines de caracteres pour compiler le shader
78  const char *vertex_strings[]= { vertex_source.c_str() };
79  glShaderSource(vertex_shader, 1, vertex_strings, NULL);
80  // compiler les sources
81  glCompileShader(vertex_shader);
82 
83  // pareil pour le fragment 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);
89 
90  // creer le program et linker les 2 shaders
91  program= glCreateProgram();
92  // inclure les 2 shaders dans le program
93  glAttachShader(program, vertex_shader);
94  glAttachShader(program, fragment_shader);
95  // linker les shaders
96  glLinkProgram(program);
97 
98  /* ou, plus court avec les utilitaires de program.h
99  #include "program.h"
100 
101  program= read_program("tuto2GL.glsl");
102  program_print_errors(program);
103  */
104 
105  // verifier que tout c'est bien passe, si les shaders ne se sont pas compiles correctement, le link du program va echouer.
106  GLint status;
107  glGetProgramiv(program, GL_LINK_STATUS, &status);
108  if(status == GL_FALSE)
109  printf("[error] linking pogram...\n");
110 
111  // renvoyer 0 ras, pas d'erreur, sinon renvoyer -1
112  if(status == GL_TRUE)
113  return 0;
114  else
115  return -1;
116  }
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().
Definition: text.cpp:140

◆ quit()

int Tuto2GL::quit ( )
inlinevirtual

a deriver pour detruire les objets openGL. renvoie -1 pour indiquer une erreur, 0 sinon.

Implements App.

Definition at line 120 of file tuto2GL_app.cpp.

121  {
122  glDeleteShader(vertex_shader);
123  glDeleteShader(fragment_shader);
124  glDeleteProgram(program);
125 
126  /* ou
127  release_program(program);
128  */
129 
130  glDeleteVertexArrays(1, &vao);
131  return 0; // ras, pas d'erreur
132  }

◆ render()

int Tuto2GL::render ( )
inlinevirtual

a deriver pour afficher les objets. renvoie 1 pour continuer, 0 pour fermer l'application.

Implements App.

Definition at line 135 of file tuto2GL_app.cpp.

136  {
137  // effacer la fenetre : copier la couleur par defaut dans tous les pixels de la fenetre
138  glClearColor(0.2, 0.2, 0.2, 1); // definir la couleur par defaut
139  glClear(GL_COLOR_BUFFER_BIT); // "effacer"
140 
141  // configurer le pipeline, selectionner le shader program a utiliser
142  glUseProgram(program);
143 
144  // configurer le pipeline, selectionner le vertex array a utiliser
145  glBindVertexArray(vao);
146 
147  // dessiner 1 triangle, indices gl_VertexID de 0 a 3
148  glDrawArrays(GL_TRIANGLES, 0, 3);
149 
150  return 1; // on continue, renvoyer 0 pour sortir de l'application
151  }

The documentation for this struct was generated from the following file: