gKit2 light
Toggle main menu visibility
Loading...
Searching...
No Matches
gkit2_tutos
tuto7.cpp
Go to the documentation of this file.
1
3
4
#include "
wavefront.h
"
5
#include "
texture.h
"
6
7
#include "
orbiter.h
"
8
#include "
draw.h
"
9
#include "
app.h
"
// classe Application a deriver
10
11
12
class
TP
:
public
App
13
{
14
public
:
15
// constructeur : donner les dimensions de l'image, et eventuellement la version d'openGL.
16
TP( ) :
App
(1024, 640) {}
17
18
// creation des objets de l'application
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
// dessiner une nouvelle image
49
int
render
( )
50
{
51
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
52
53
// deplace la camera
54
int
mx, my;
55
unsigned
int
mb= SDL_GetRelativeMouseState(&mx, &my);
56
if
(mb & SDL_BUTTON(1))
// le bouton gauche est enfonce
57
m_camera.rotation(mx, my);
58
else
if
(mb & SDL_BUTTON(3))
// le bouton droit est enfonce
59
m_camera.move(mx);
60
else
if
(mb & SDL_BUTTON(2))
// le bouton du milieu est enfonce
61
m_camera.translation((
float
) mx / (
float
)
window_width
(), (
float
) my / (
float
)
window_height
());
62
63
// affiche l'objet pour le point de vue de la camera et avec une texture
64
draw(m_objet, m_camera, m_texture);
65
66
return
1;
67
}
68
69
protected
:
70
Mesh
m_objet;
71
GLuint m_texture;
72
Orbiter
m_camera;
73
};
74
75
76
int
main(
int
argc,
char
**argv )
77
{
78
// il ne reste plus qu'a creer un objet application et la lancer
79
TP
tp;
80
tp.
run
();
81
82
return
0;
83
}
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
tuto7.cpp:49
TP::quit
int quit()
a deriver pour detruire les objets openGL. renvoie -1 pour indiquer une erreur, 0 sinon.
Definition
tuto7.cpp:40
TP::init
int init()
a deriver pour creer les objets openGL. renvoie -1 pour indiquer une erreur, 0 sinon.
Definition
tuto7.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
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
orbiter.h
Point
representation d'un point 3d.
Definition
vec.h:21
texture.h
wavefront.h
Generated on
for gKit2 light by
1.17.0