gKit2 light
Loading...
Searching...
No Matches
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
14class TP : public App
15{
16public:
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
77protected:
78 Transform m_model;
79 Mesh m_objet;
80 GLuint m_texture;
81 Orbiter m_camera;
82};
83
84
85int main( int argc, char **argv )
86{
87 TP tp;
88 tp.run();
89
90 return 0;
91}
classe application.
Definition app.h:20
int run()
execution de l'application.
Definition app.cpp:36
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
representation d'un objet / maillage.
Definition mesh.h:121
representation de la camera, type orbiter, placee sur une sphere autour du centre de l'objet.
Definition orbiter.h:17
Definition alpha.cpp:58
int render()
a deriver pour afficher les objets. renvoie 1 pour continuer, 0 pour fermer l'application.
Definition tuto8.cpp:60
int quit()
a deriver pour detruire les objets openGL. renvoie -1 pour indiquer une erreur, 0 sinon.
Definition tuto8.cpp:41
int update(const float time, const float delta)
a deriver et redefinir pour animer les objets en fonction du temps.
Definition tuto8.cpp:49
int init()
a deriver pour creer les objets openGL. renvoie -1 pour indiquer une erreur, 0 sinon.
Definition tuto8.cpp:20
Transform RotationY(const float a)
renvoie la matrice representation une rotation de a degree autour de l'axe Y.
Definition mat.cpp:242
Mesh read_mesh(const char *filename)
charge un fichier wavefront .obj et renvoie un mesh compose de triangles non indexes....
Definition wavefront.cpp:14
GLuint read_texture(const int unit, const char *filename, const GLenum texel_type)
Definition texture.cpp:133
representation d'un point 3d.
Definition vec.h:21
representation d'une transformation, une matrice 4x4, organisee par ligne / row major.
Definition mat.h:21