12.2.3 La fonction executer

C'est la fonction principale de notre application :

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
int PAppSdlOpenGl3::executer(){
	if(!p_isOpenGlSdlInit) return 1;
	p_isRun = true;
	while(p_isRun){
		p_start_time = SDL_GetTicks();
		this->clearKeyStatesNoRepeat();
		while(SDL_PollEvent(&p_evenements)){
			this->updateWithEvent(&p_evenements);
			this->getEvent(&p_evenements);
		}
		// Nettoyage de l'écran
		glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
		//on suppose que tout à bien fonctionné comme prévus et que le temps de calcul était égale à this->timeForOneFrame (en même temps on s’arrange pour que se soit le cas)
		this->update(p_timeForOneFrame*DTFACTOR);   //on gère les événements
		
		// Ré-initialisation de la matrice et placement de la caméra
		p_matModelview.loadIdentity();
		p_cameraGL.see(p_matModelview);
		
		this->draw3d();               //on affiche tout
		
		SDL_GL_SwapWindow(p_fenetre);   //on fait le double buffering
		p_ellapsed_time = SDL_GetTicks() - p_start_time;
		if(p_ellapsed_time < p_timeForOneFrame){SDL_Delay(p_timeForOneFrame - p_ellapsed_time);}
	}
	return 0;
}

Normalement vous connaissez déjà tout, regardez bien les différences, la matrice p_matModelview, la caméra p_cameraGL. Cela revient au même que ce dont vous aviez l'habitude, c'est juste écrit différemment.