gKit2 light
Loading...
Searching...
No Matches
tuto3.cpp File Reference

utiliser mesh pour dessiner un triangle avec une rotation More...

#include <cstdio>
#include "window.h"
#include "mesh.h"
#include "draw.h"

Go to the source code of this file.

Functions

int init ()
int draw ()
int quit ()
int main (int argc, char **argv)

Variables

Mesh triangle

Detailed Description

utiliser mesh pour dessiner un triangle avec une rotation

Definition in file tuto3.cpp.

Function Documentation

◆ init()

int init ( )

Definition at line 17 of file tuto3.cpp.

18{
19 // etape 1 : decrire le triangle, les coordonnees des 3 sommets.
20
21 // creer un mesh pour stocker les coordonnees des sommets du triangle
22 triangle= Mesh(GL_TRIANGLES);
23
24 triangle.color(Color(1, 0, 0));
25 triangle.vertex(-0.5, -0.5, 0);
26
27 triangle.color(Color(0, 1, 0));
28 triangle.vertex(0.5, 0.5, 0);
29
30 triangle.color(Color(0, 0, 1));
31 triangle.vertex(-0.5, 0.5, 0);
32
33 return 0; // ras, pas d'erreur
34}
representation d'un objet / maillage.
Definition mesh.h:121
representation d'une couleur (rgba) transparente ou opaque.
Definition color.h:14

◆ draw()

int draw ( void )

Definition at line 36 of file tuto3.cpp.

37{
38 // etape 2 : dessiner l'objet avec opengl
39
40 // on commence par effacer la fenetre avant de dessiner quelquechose
41 glClear(GL_COLOR_BUFFER_BIT);
42
43 // on dessine le triangle avec une transformation : rotation autour de Z
44 /*
45 openGL utilise un repere droit, x vers la droite, y vers le haut et z devant (vers l'observateur)
46 donc une rotation autour de l'axe Z permet de faire tourner le triangle dans l'image.
47 */
48 Transform T= RotationZ(45);
49 draw(triangle, T, Identity(), Identity());
50
51 return 1; // on continue, renvoyer 0 pour sortir de l'application
52
53// on peut aussi controler la rotation du triangle au clavier...
54/*
55 static float angle= 0; // il faudrait declarer angle comme variable globale...
56 if(key_state('j'))
57 angle= angle + 1;
58 if(key_state('k'))
59 angle= angle - 1;
60
61 Transform T= RotationZ( angle );
62 draw(triangle, T, Identity(), Identity());
63
64 return 1;
65 */
66
67// utiliser une autre transformation : Scale(), Translation(), etc.
68}
Transform Identity()
construit la transformation identite.
Definition mat.cpp:187
Transform RotationZ(const float a)
renvoie la matrice representation une rotation de angle degree autour de l'axe Z.
Definition mat.cpp:254
representation d'une transformation, une matrice 4x4, organisee par ligne / row major.
Definition mat.h:21

◆ quit()

int quit ( )

Definition at line 70 of file tuto3.cpp.

71{
72 // etape 3 : detruire la description du triangle
73 triangle.release();
74 return 0; // ras, pas d'erreur
75}

◆ main()

int main ( int argc,
char ** argv )

Definition at line 78 of file tuto3.cpp.

79{
80 // etape 1 : creer la fenetre
81 Window window= create_window(1024, 640);
82 if(window == NULL)
83 // erreur lors de la creation de la fenetre ou de l'init de sdl2
84 return 1;
85
86 // etape 2 : creer un contexte opengl pour pouvoir dessiner
87 Context context= create_context(window);
88 if(context == NULL)
89 // erreur lors de la creation du contexte opengl
90 return 1;
91
92 // etape 3 : creation des objets
93 if(init() < 0)
94 {
95 printf("[error] init failed.\n");
96 return 1;
97 }
98
99 // etape 4 : affichage de l'application, tant que la fenetre n'est pas fermee. ou que draw() ne renvoie pas 0
100 run(window, draw);
101
102 // etape 5 : nettoyage
103 quit();
104 release_context(context);
105 release_window(window);
106 return 0;
107}
Context create_context(Window window)
cree et configure un contexte opengl
Definition window.cpp:358
void release_window(Window window)
destruction de la fenetre.
Definition window.cpp:328
int run(Window window, int(*draw)())
boucle de gestion des evenements de l'application.
Definition window.cpp:158
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)
creation d'une fenetre pour l'application.
Definition window.cpp:262
void release_context(Context context)
detruit le contexte openGL.
Definition window.cpp:439
int init(std::vector< const char * > &options)

Variable Documentation

◆ triangle

Mesh triangle

Definition at line 14 of file tuto3.cpp.