gKit2 light
Toggle main menu visibility
Loading...
Searching...
No Matches
gkit2_tutos
tuto4.cpp
Go to the documentation of this file.
1
3
4
#include <stdio.h>
5
#include "
window.h
"
6
#include "
mesh.h
"
7
8
#include "
orbiter.h
"
// camera
9
10
#include "
draw.h
"
// pour dessiner du point de vue d'une camera
11
12
/*
13
par defaut, openGL dessine les objets qui se trouvent entre -1 et 1 sur x, y et z.
14
*/
15
16
Mesh
triangle;
17
Orbiter
camera;
18
19
int
init
( )
20
{
21
// etape 1 : decrire le triangle, les coordonnees des 3 sommets.
22
23
// creer un mesh pour stocker les coordonnees des sommets du triangle
24
triangle=
Mesh
(GL_TRIANGLES);
25
26
triangle.color(
Color
(1, 0, 0));
27
triangle.vertex(-0.5, -0.5, 0);
28
29
triangle.color(
Color
(0, 1, 0));
30
triangle.vertex(0.5, 0.5, 0);
31
32
triangle.color(
Color
(0, 0, 1));
33
triangle.vertex(-0.5, 0.5, 0);
34
35
// etape 2 : creer une camera par defaut, elle est placee en 0, 0, 5 et regarde les objets situes en 0, 0, 0
36
camera=
Orbiter
();
37
38
return
0;
// ras, pas d'erreur
39
}
40
41
int
draw( )
42
{
43
// etape 2 : dessiner l'objet avec opengl
44
45
// on commence par effacer la fenetre avant de dessiner quelquechose
46
glClear(GL_COLOR_BUFFER_BIT);
47
48
// on dessine le triangle du point de vue de la camera
49
draw(triangle, camera);
50
51
return
1;
// on continue, renvoyer 0 pour sortir de l'application
52
53
// on peut aussi controler la position de la camera, au clavier, par exemple
54
/*
55
float avance= 0;
56
if(key_state('j'))
57
avance= 1;
58
if(key_state('k'))
59
avance= -1;
60
61
camera.move(avance);
62
//~ camera.translation(avance / 100, 0);
63
draw(triangle, camera);
64
65
return 1;
66
*/
67
// et ses rotations, cf Orbiter::rotation( ), Orbiter::translation( )...
68
// on peut aussi recuperer les mouvements de la souris et l'utiliser pour controler la camera... cf SDL_GetRelativeMouseState( )
69
}
70
71
int
quit( )
72
{
73
// etape 3 : detruire la description du triangle
74
triangle.release();
75
return
0;
// ras, pas d'erreur
76
}
77
78
79
int
main(
int
argc,
char
**argv )
80
{
81
// etape 1 : creer la fenetre
82
Window window=
create_window
(1024, 640);
83
if
(window == NULL)
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
return
1;
90
91
// etape 3 : creation des objets
92
if
(
init
() < 0)
93
{
94
printf
(
"[error] init failed.\n"
);
95
return
1;
96
}
97
98
// etape 4 : affichage de l'application, tant que la fenetre n'est pas fermee. ou que draw() ne renvoie pas 0
99
run
(window, draw);
100
101
// etape 5 : nettoyage
102
quit();
103
release_context
(context);
104
release_window
(window);
105
return
0;
106
}
Mesh
representation d'un objet / maillage.
Definition
mesh.h:121
Orbiter
representation de la camera, type orbiter, placee sur une sphere autour du centre de l'objet.
Definition
orbiter.h:17
draw.h
create_context
Context create_context(Window window)
cree et configure un contexte opengl
Definition
window.cpp:358
release_window
void release_window(Window window)
destruction de la fenetre.
Definition
window.cpp:328
run
int run(Window window, int(*draw)())
boucle de gestion des evenements de l'application.
Definition
window.cpp:158
printf
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
create_window
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
release_context
void release_context(Context context)
detruit le contexte openGL.
Definition
window.cpp:439
mesh.h
orbiter.h
init
int init(std::vector< const char * > &options)
Definition
shader_kit.cpp:97
Color
representation d'une couleur (rgba) transparente ou opaque.
Definition
color.h:14
window.h
Generated on
for gKit2 light by
1.17.0