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
#include "
app_camera.h
"
// gestion camera
12
13
14
class
TP
:
public
App
15
{
16
public
:
17
// constructeur : donner les dimensions de l'image, et eventuellement la version d'openGL.
18
TP( ) :
App
(1024, 640) {}
19
20
int
init
( )
21
{
22
m_objet=
read_mesh
(
"data/cube.obj"
);
23
24
Point
pmin, pmax;
25
m_objet.bounds(pmin, pmax);
26
m_camera.lookat(pmin, pmax);
27
28
m_texture=
read_texture
(0,
"data/debug2x2red.png"
);
29
30
// etat openGL par defaut
31
glClearColor(0.2f, 0.2f, 0.2f, 1.f);
// couleur par defaut de la fenetre
32
33
glClearDepth(1.f);
// profondeur par defaut
34
glDepthFunc(GL_LESS);
// ztest, conserver l'intersection la plus proche de la camera
35
glEnable(GL_DEPTH_TEST);
// activer le ztest
36
37
return
0;
// ras, pas d'erreur
38
}
39
40
// destruction des objets de l'application
41
int
quit
( )
42
{
43
m_objet.release();
44
glDeleteTextures(1, &m_texture);
45
46
return
0;
47
}
48
49
int
update
(
const
float
time,
const
float
delta )
50
{
51
// modifier l'orientation du cube a chaque image.
52
// time est le temps ecoule depuis le demarrage de l'application, en millisecondes,
53
// delta est le temps ecoule depuis l'affichage de la derniere image / le dernier appel a draw(), en millisecondes.
54
55
m_model=
RotationY
(time / 20);
56
return
0;
57
}
58
59
// dessiner une nouvelle image
60
int
render
( )
61
{
62
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
63
64
// gestion mouvements camera
65
update_camera( m_camera );
66
67
draw(m_objet, m_model, m_camera, m_texture);
68
69
/* on pourrait obtenir le meme resultat sans utiliser App::update( ).
70
les parametres time et update sont renvoyes par les fonctions global_time() et delta_time() :
71
draw(m_objet, RotationY(global_time() / 20), m_camera, m_texture);
72
*/
73
74
return
1;
75
}
76
77
protected
:
78
Transform
m_model;
79
Mesh
m_objet;
80
GLuint m_texture;
81
Orbiter
m_camera;
82
};
83
84
85
int
main(
int
argc,
char
**argv )
86
{
87
TP
tp;
88
tp.
run
();
89
90
return
0;
91
}
app.h
app_camera.h
App
classe application.
Definition
app.h:20
App::run
int run()
execution de l'application.
Definition
app.cpp:36
App::App
App(const int width, const int height, const int major=3, const int minor=3)
constructeur, dimensions de la fenetre et version d'openGL.
Definition
app.cpp:11
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:60
TP::quit
int quit()
a deriver pour detruire les objets openGL. renvoie -1 pour indiquer une erreur, 0 sinon.
Definition
tuto8.cpp:41
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:49
TP::init
int init()
a deriver pour creer les objets openGL. renvoie -1 pour indiquer une erreur, 0 sinon.
Definition
tuto8.cpp:20
draw.h
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