13.2.1 Le fichier PAppTestSdlGl3.h

Commençons par les includes et defines :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#ifndef ___PAppTestSdlGl3_H__
#define ___PAppTestSdlGl3_H__

#define GL3_PROTOTYPES 1
#include <GL3/gl3.h>

#include <SDL2/SDL.h>
#include <SDL2/SDL_video.h>
#include <SDL2/SDL_keycode.h>
#include <SDL2/SDL_keyboard.h>
#include <SDL2/SDL_events.h>

#include <iostream>
#include <string>
#include "Matrice4.h"
#include "load_shaders.h"
#include "PAppSdlOpenGl3.h"
#include "load_texture_Gl3.h"

#define GL_FRAGMENT_SHADER_VERTICES_CUBE_COLORED "../shaders/couleurs.frag"
#define GL_VERTEX_SHADER_VERTICES_CUBE_COLORED "../shaders/couleurs.vert"


#endif //classe PAppTestSdlGl3

Et voici la classe PAppTestSdlGl3 :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class PAppTestSdlGl3 : public PAppSdlOpenGl3{
	public:
		PAppTestSdlGl3(const std::string & titreFenetre, int largeurFenetre, int hauteurFenetre);
		virtual ~PAppTestSdlGl3();
		void update(float dt);
		void draw3d();
		
		
	private:
		void drawTexturedCube3D();
		void initialisationPAppTestSdlGl3();
		void initialisationTouches();
		void initilisationCamera();
		void initialisationProgrammeShader();
		void initialisationVertices();
		void initialisationColors();
		void initialisationIndex();
		
		GLuint p_programTest;
		GLint p_idMatriceModelView;
		GLint p_idMatriceProjection;
		
		GLuint p_texture;
		
		float *p_vertices;
		unsigned int *p_indices;
		float *p_couleurs;
};

Vous reconnaissez les fonctions void update(float dt) et void draw3d(), les autres fonctions ont des noms assez explicites.

Nous nous servirons de l'attribut p_texture dans l'exemple suivant.

Enfin vous avez :

  • p_vertices le tableau de vertices, pour afficher notre cube
  • p_indices le tableau d'indices, pour définir les faces de notre cube
  • p_couleurs le tableau des couleurs des arrêtes de notre cube

Le fichier PAppTestSdlGl3.h final ressemble à ça :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#ifndef ___PAppTestSdlGl3_H__
#define ___PAppTestSdlGl3_H__

#define GL3_PROTOTYPES 1
#include <GL3/gl3.h>

#include <SDL2/SDL.h>
#include <SDL2/SDL_video.h>
#include <SDL2/SDL_keycode.h>
#include <SDL2/SDL_keyboard.h>
#include <SDL2/SDL_events.h>

#include <iostream>
#include <string>
#include "Matrice4.h"
#include "load_shaders.h"
#include "PAppSdlOpenGl3.h"
#include "load_texture_Gl3.h"

#define GL_FRAGMENT_SHADER_VERTICES_CUBE_COLORED "../shaders/couleurs.frag"
#define GL_VERTEX_SHADER_VERTICES_CUBE_COLORED "../shaders/couleurs.vert"

/** @brief Classe pour utiliser des shaders de manière un peu moins foutoirs que la classe AppSdlOPenGl3
*/


class PAppTestSdlGl3 : public PAppSdlOpenGl3{
	public:
		PAppTestSdlGl3(const std::string & titreFenetre, int largeurFenetre, int hauteurFenetre);
		virtual ~PAppTestSdlGl3();
		void update(float dt);
		void draw3d();
		
		
	private:
		void drawTexturedCube3D();
		void initialisationPAppTestSdlGl3();
		void initialisationTouches();
		void initilisationCamera();
		void initialisationProgrammeShader();
		void initialisationVertices();
		void initialisationColors();
		void initialisationIndex();
		
		GLuint p_programTest;
		GLint p_idMatriceModelView;
		GLint p_idMatriceProjection;
		
		GLuint p_texture;
		
		float *p_vertices;
		unsigned int *p_indices;
		float *p_couleurs;
};


#endif //classe PAppTestSdlGl3

Passons au cpp.