gKit2 light
Loading...
Searching...
No Matches
tuto6.cpp File Reference

dessiner un objet texture More...

#include <stdio.h>
#include "window.h"
#include "mesh.h"
#include "wavefront.h"
#include "texture.h"
#include "orbiter.h"
#include "draw.h"
#include "app_camera.h"

Go to the source code of this file.

Functions

int init ()
int draw ()
int quit ()
int main (int argc, char **argv)

Variables

Mesh objet
GLuint texture
Orbiter camera

Detailed Description

dessiner un objet texture

Definition in file tuto6.cpp.

Function Documentation

◆ init()

int init ( )

Definition at line 23 of file tuto6.cpp.

24{
25 // etape 1 : charger un objet
26 objet= read_mesh("data/cube.obj");
27
28 // etape 2 : creer une camera pour observer l'objet
29 // construit l'englobant de l'objet, les extremites de sa boite englobante
30 Point pmin, pmax;
31 objet.bounds(pmin, pmax);
32
33 // regle le point de vue de la camera pour observer l'objet
34 camera.lookat(pmin, pmax);
35
36 // etape 3 : charger une texture a aprtir d'un fichier .bmp, .jpg, .png, .tga, etc, utilise read_image( ) et sdl_image
37/*
38 openGL peut utiliser plusieurs textures simultanement pour dessiner un objet, il faut les numeroter.
39 une texture et ses parametres sont selectionnes sur une unite de texture.
40 et ce sont les unites de texture qui sont utilisees pour dessiner un objet.
41
42 l'exemple cree la texture sur l'unite 0 avec les parametres par defaut
43 */
44 texture= read_texture(0, "data/debug2x2red.png");
45
46 // etat openGL par defaut
47 glClearColor(0.2f, 0.2f, 0.2f, 1.f); // couleur par defaut de la fenetre
48
49 // etape 3 : configuration du pipeline.
50 glClearDepth(1.f); // profondeur par defaut
51 glDepthFunc(GL_LESS); // ztest, conserver l'intersection la plus proche de la camera
52 glEnable(GL_DEPTH_TEST); // activer le ztest
53
54 return 0; // ras, pas d'erreur
55}
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

◆ draw()

int draw ( void )

Definition at line 57 of file tuto6.cpp.

58{
59 // etape 2 : dessiner l'objet avec opengl
60
61 // on commence par effacer la fenetre avant de dessiner quelquechose
62 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
63 // on efface aussi le zbuffer
64
65 // gestion des mouvements de la souris
66 update_camera( camera );
67
68 // passer la texture en parametre
69 draw(objet, camera, texture);
70 return 1;
71}

◆ quit()

int quit ( )

Definition at line 73 of file tuto6.cpp.

74{
75 // etape 3 : detruire la description de l'objet
76 objet.release();
77
78 // et la texture
79 glDeleteTextures(1, &texture);
80
81 return 0; // ras, pas d'erreur
82}

◆ main()

int main ( int argc,
char ** argv )

Definition at line 85 of file tuto6.cpp.

86{
87 // etape 1 : creer la fenetre
88 Window window= create_window(1024, 640);
89 if(window == NULL)
90 return 1;
91
92 // etape 2 : creer un contexte opengl pour pouvoir dessiner
93 Context context= create_context(window);
94 if(context == NULL)
95 return 1;
96
97 // etape 3 : creation des objets
98 if(init() < 0)
99 {
100 printf("[error] init failed.\n");
101 return 1;
102 }
103
104 // etape 4 : affichage de l'application, tant que la fenetre n'est pas fermee. ou que draw() ne renvoie pas 0
105 run(window, draw);
106
107 // etape 5 : nettoyage
108 quit();
109 release_context(context);
110 release_window(window);
111 return 0;
112}
Context create_context(Window window)
cree et configure un contexte opengl
Definition window.cpp:358
void release_window(Window window)
destruction de la fenetre.
Definition window.cpp:328
int run(Window window, int(*draw)())
boucle de gestion des evenements de l'application.
Definition window.cpp:158
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
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
void release_context(Context context)
detruit le contexte openGL.
Definition window.cpp:439
int init(std::vector< const char * > &options)

Variable Documentation

◆ objet

Mesh objet

Definition at line 19 of file tuto6.cpp.

◆ texture

GLuint texture

Definition at line 20 of file tuto6.cpp.

◆ camera

Orbiter camera

Definition at line 21 of file tuto6.cpp.