gKit2 light
tuto2.cpp
Go to the documentation of this file.
1 
3 
4 #include <stdio.h>
5 #include "window.h"
6 #include "mesh.h"
7 #include "draw.h"
8 
9 /* par defaut, openGL dessine les objets qui se trouvent entre -1 et 1 sur x, y et z.
10  */
11 
12 Mesh triangle;
13 
14 
15 int init( )
16 {
17  // etape 1 : decrire le triangle, les coordonnees des 3 sommets.
18 
19  // creer un mesh pour stocker les coordonnees des sommets du triangle
20  triangle= Mesh(GL_TRIANGLES);
21 
22  // choisir une couleur pour les sommets, rouge + vert = jaune
23  triangle.color(Color(1, 1, 0));
24 
25  // donner les positions des 3 sommets, entre -1 1 sur x, y, z
26  triangle.vertex(-0.5, -0.5, 0);
27  triangle.vertex( 0.5, 0.5, 0);
28  triangle.vertex(-0.5, 0.5, 0);
29 
30  return 0; // ras, pas d'erreur
31 
32 // on peut aussi donner des couleurs differentes aux sommets du triangle :
33 /*
34  triangle.color(Color(1, 0, 0));
35  triangle.vertex(-0.5, -0.5, 0);
36 
37  triangle.color(Color(0, 1, 0));
38  triangle.vertex(0.5, 0.5, 0);
39 
40  triangle.color(Color(0, 0, 1));
41  triangle.vertex(-0.5, 0.5, 0);
42 
43  return 0; // ras, pas d'erreur
44  */
45 }
46 
47 int draw( )
48 {
49  // etape 2 : dessiner l'objet avec opengl
50 
51  // on commence par effacer la fenetre avant de dessiner quelquechose
52  glClear(GL_COLOR_BUFFER_BIT);
53 
54  // on dessine le triangle sans changer les transformations.
55  draw(triangle, Identity(), Identity(), Identity());
56 
57  return 1; // on continue, renvoyer 0 pour sortir de l'application
58 }
59 
60 int quit( )
61 {
62  // etape 3 : detruire la description du triangle
63  triangle.release();
64  return 0; // ras, pas d'erreur
65 }
66 
67 
68 int main( int argc, char **argv )
69 {
70  // etape 1 : creer la fenetre
71  Window window= create_window(1024, 640);
72  if(window == NULL)
73  return 1; // erreur lors de la creation de la fenetre ou de l'init de sdl2
74 
75  // etape 2 : creer un contexte opengl pour pouvoir dessiner
76  Context context= create_context(window);
77  if(context == NULL)
78  return 1; // erreur lors de la creation du contexte opengl
79 
80  // etape 3 : creation des objets
81  if(init() < 0)
82  {
83  printf("[error] init failed.\n");
84  return 1;
85  }
86 
87  // etape 4 : affichage de l'application, tant que la fenetre n'est pas fermee. ou que draw() ne renvoie pas 0
88  run(window, draw);
89 
90  // etape 5 : nettoyage
91  quit();
92  release_context(context);
93  release_window(window);
94  return 0;
95 }
representation d'un objet / maillage.
Definition: mesh.h:112
unsigned int vertex(const vec3 &p)
insere un sommet de position p, et ses attributs (s'ils sont definis par color(), texcoord(),...
Definition: mesh.cpp:109
void release()
detruit les objets openGL.
Definition: mesh.cpp:62
Mesh & color(const vec4 &c)
definit la couleur du prochain sommet.
Definition: mesh.cpp:78
Context create_context(Window window)
cree et configure un contexte opengl
Definition: window.cpp:356
void release_window(Window window)
destruction de la fenetre.
Definition: window.cpp:325
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
Window create_window(const int w, const int h, const int major, const int minor, const int samples)
creation d'une fenetre pour l'application.
Definition: window.cpp:259
void release_context(Context context)
detruit le contexte openGL.
Definition: window.cpp:422
Transform Identity()
construit la transformation identite.
Definition: mat.cpp:187
int init(std::vector< const char * > &options)
Definition: shader_kit.cpp:92
representation d'une couleur (rgba) transparente ou opaque.
Definition: color.h:14
int run(Window window, int(*draw)())
boucle de gestion des evenements de l'application.
Definition: window.cpp:147