-
Notifications
You must be signed in to change notification settings - Fork 0
/
window.c
108 lines (99 loc) · 3.26 KB
/
window.c
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
/*!\file window.c
*
* \brief Utilisation de GL4Dummies pour réaliser une démo.
*
* Ici est géré l'ouverture de la fenêtre ainsi que l'ordonnancement
* des animations. Apriori les seuls éléments à modifier ici lors de
* votre intégration sont le tableau static \ref _animations et le nom
* du fichier audio à lire.
*
* \author Farès BELHADJ, [email protected]
* \date May 05, 2014 - February 26, 2016
*/
#include <stdlib.h>
#include <GL4D/gl4du.h>
#include <GL4D/gl4dh.h>
#include <GL4D/gl4duw_SDL2.h>
#include <SDL_image.h>
#include <GL4D/gl4dp.h>
#include "animations.h"
#include "audioHelper.h"
/* Prototypes des fonctions statiques contenues dans ce fichier C. */
static void init(void);
static void quit(void);
static void resize(int w, int h);
static void keydown(int keycode);
/*!\brief tableau contenant les animations sous la forme de timeline,
* ce tableau se termine toujours par l'élémént {0, NULL, NULL,
* NULL} */
static GL4DHanime _animations[] = {
//{20000, animation_disco, NULL, NULL },
{20000,animation_intro, NULL, NULL },
{ 3000, animation_intro,animation_voronoi,transition_careaux},
{ 12000, animation_voronoi, NULL, NULL },
{ 3000,animation_voronoi,animation_Pendule_de_Newton, transition_rideau },
{ 12000,animation_Pendule_de_Newton,NULL,NULL},
{ 3000,animation_Pendule_de_Newton,animation_spirales, transition_circulaire },
{ 4000, animation_spirales, NULL, NULL},
{ 3000, animation_spirales, animation_disco, transition_cercles},
{20000, animation_disco, NULL, NULL },
{ 3000, animation_disco, animation_outro, transition_rideau2},
{15000,animation_outro,NULL,NULL},
{0, NULL, NULL, NULL } /* Toujours laisser à la fin */
};
/*!\brief dimensions initiales de la fenêtre */
static GLfloat _dim[] = {1024, 768};
/*!\brief fonction principale : initialise la fenêtre, OpenGL, audio
* et lance la boucle principale (infinie).
*/
int main(int argc, char ** argv) {
if(!gl4duwCreateWindow(argc, argv, "GL4Dummies Demo IDIR",
SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED,
_dim[0], _dim[1],
SDL_WINDOW_SHOWN))
return 1;
init();
atexit(quit);
gl4duwResizeFunc(resize);
gl4duwKeyDownFunc(keydown);
gl4duwDisplayFunc(gl4dhDraw);
//source https://www.auboutdufil.com/
ahInitAudio("musiques/CloneMeTwice-Inception .mp3");
gl4duwMainLoop();
return 0;
}
/*!\brief Cette fonction initialise les paramètres et éléments OpenGL
* ainsi que les divers données et fonctionnalités liées à la gestion
* des animations.
*/
static void init(void) {
glClearColor(0.2f, 0.2f, 0.2f, 0.0f);
gl4dhInit(_animations, _dim[0], _dim[1], animationsInit);
resize(_dim[0], _dim[1]);
}
/*!\brief paramétre la vue (viewPort) OpenGL en fonction des
* dimensions de la fenêtre.
* \param w largeur de la fenêtre.
* \param w hauteur de la fenêtre.
*/
static void resize(int w, int h) {
_dim[0] = w; _dim[1] = h;
glViewport(0, 0, _dim[0], _dim[1]);
}
/*!\brief permet de gérer les évènements clavier-down.
* \param keycode code de la touche pressée.
*/
static void keydown(int keycode) {
switch(keycode) {
case SDLK_ESCAPE:
case 'q':
exit(0);
default: break;
}
}
/*!\brief appelée à la sortie du programme (atexit).
*/
static void quit(void) {
ahClean();
gl4duClean(GL4DU_ALL);
}