gKit2 light
Toggle main menu visibility
Loading...
Searching...
No Matches
gkit2_tutos
tuto8.cpp
Go to the documentation of this file.
1
3
4
#include "
mat.h
"
5
#include "
wavefront.h
"
6
#include "
texture.h
"
7
8
#include "
orbiter.h
"
9
#include "
draw.h
"
10
#include "
app.h
"
// classe Application a deriver
11
12
13
class
TP
:
public
App
14
{
15
public
:
16
// constructeur : donner les dimensions de l'image, et eventuellement la version d'openGL.
17
TP( ) :
App
(1024, 640) {}
18
19
int
init
( )
20
{
21
m_objet=
read_mesh
(
"data/cube.obj"
);
22
23
Point
pmin, pmax;
24
m_objet.bounds(pmin, pmax);
25
m_camera.lookat(pmin, pmax);
26
27
m_texture=
read_texture
(0,
"data/debug2x2red.png"
);
28
29
// etat openGL par defaut
30
glClearColor(0.2f, 0.2f, 0.2f, 1.f);
// couleur par defaut de la fenetre
31
32
glClearDepth(1.f);
// profondeur par defaut
33
glDepthFunc(GL_LESS);
// ztest, conserver l'intersection la plus proche de la camera
34
glEnable(GL_DEPTH_TEST);
// activer le ztest
35
36
return
0;
// ras, pas d'erreur
37
}
38
39
// destruction des objets de l'application
40
int
quit
( )
41
{
42
m_objet.release();
43
glDeleteTextures(1, &m_texture);
44
45
return
0;
46
}
47
48
int
update
(
const
float
time,
const
float
delta )
49
{
50
// modifier l'orientation du cube a chaque image.
51
// time est le temps ecoule depuis le demarrage de l'application, en millisecondes,
52
// delta est le temps ecoule depuis l'affichage de la derniere image / le dernier appel a draw(), en millisecondes.
53
54
m_model=
RotationY
(time / 20);
55
return
0;
56
}
57
58
// dessiner une nouvelle image
59
int
render
( )
60
{
61
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
62
63
// deplace la camera
64
int
mx, my;
65
unsigned
int
mb= SDL_GetRelativeMouseState(&mx, &my);
66
if
(mb & SDL_BUTTON(1))
// le bouton gauche est enfonce
67
m_camera.rotation(mx, my);
68
else
if
(mb & SDL_BUTTON(3))
// le bouton droit est enfonce
69
m_camera.move(mx);
70
else
if
(mb & SDL_BUTTON(2))
// le bouton du milieu est enfonce
71
m_camera.translation((
float
) mx / (
float
)
window_width
(), (
float
) my / (
float
)
window_height
());
72
73
draw(m_objet, m_model, m_camera, m_texture);
74
75
/* on pourrait obtenir le meme resultat sans utiliser App::update( ).
76
les parametres time et update sont renvoyes par les fonctions global_time() et delta_time() :
77
draw(m_objet, RotationY(global_time() / 20), m_camera, m_texture);
78
*/
79
80
return
1;
81
}
82
83
protected
:
84
Transform
m_model;
85
Mesh
m_objet;
86
GLuint m_texture;
87
Orbiter
m_camera;
88
};
89
90
91
int
main(
int
argc,
char
**argv )
92
{
93
TP
tp;
94
tp.
run
();
95
96
return
0;
97
}
app.h
App
classe application.
Definition
app.h:20
App::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.
Definition
app.cpp:11
App::run
int run()
execution de l'application.
Definition
app.cpp:36
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
TP
Definition
alpha.cpp:58
TP::render
int render()
a deriver pour afficher les objets. renvoie 1 pour continuer, 0 pour fermer l'application.
Definition
tuto8.cpp:59
TP::quit
int quit()
a deriver pour detruire les objets openGL. renvoie -1 pour indiquer une erreur, 0 sinon.
Definition
tuto8.cpp:40
TP::update
int update(const float time, const float delta)
a deriver et redefinir pour animer les objets en fonction du temps.
Definition
tuto8.cpp:48
TP::init
int init()
a deriver pour creer les objets openGL. renvoie -1 pour indiquer une erreur, 0 sinon.
Definition
tuto8.cpp:19
draw.h
window_height
int window_height()
renvoie la hauteur de la fenetre de l'application.
Definition
window.cpp:27
window_width
int window_width()
renvoie la largeur de la fenetre de l'application.
Definition
window.cpp:23
RotationY
Transform RotationY(const float a)
renvoie la matrice representation une rotation de a degree autour de l'axe Y.
Definition
mat.cpp:242
read_mesh
Mesh read_mesh(const char *filename)
charge un fichier wavefront .obj et renvoie un mesh compose de triangles non indexes....
Definition
wavefront.cpp:14
read_texture
GLuint read_texture(const int unit, const char *filename, const GLenum texel_type)
Definition
texture.cpp:133
mat.h
orbiter.h
Point
representation d'un point 3d.
Definition
vec.h:21
Transform
representation d'une transformation, une matrice 4x4, organisee par ligne / row major.
Definition
mat.h:21
texture.h
wavefront.h
Generated on
for gKit2 light by
1.17.0