Bonsoir,

Je viens d'ecrire un programme qui affiche des quads textures en RGBA aux coordonnes completement aleatoires d'une frame a l'autre, juste pour tester les performances de ma carte 3D.

Je suis tombee de haut en me rendant compte que pour afficher un frame de 170 quads (avec une texture 32*32), mon ordi met quelque 1.05404 secondes.

Ce resultat me semble ridicule, comparé aux performances des DisplayLists.

Je pose donc la question : si des polygons prennent tous une trajectoire differentes, et qu'alors les displaylists sont inutilisables, quelle est la bonne methode pour rendre des quads plus rapidement ?

-------

Voici un bout du code que j'ai utilisé, si cela peut aider a comprendre pourquoi j'obtiens de perfs desastreuses.... A la vue des tutos disponibles sur la toile, ma methode ne me semblait pas abherante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
 
void OnDraw(){
	//**Bcl0:
	for (;;) {
		//Randomize
		LARGE_INTEGER Hi;
		QueryPerformanceCounter(&Hi);
		srand(Hi.QuadPart);
		//**Init scene
		glClearColor(.5,.5,.5,0); 
		glClear(GL_COLOR_BUFFER_BIT);
		glEnable(GL_ALPHA_TEST);
		glAlphaFunc(GL_LESS, 1.0f);
		glLoadIdentity(); 
		gluLookAt(0,0,100,0,0,0,0,1,0); 
		//Init chrono
		Chrono.StartChrono();
		//**Dessin de NbQuads quads (coor xy:[-100;100], Z fixe)
		glBegin(GL_QUADS);
		for (tDWord Bcl=0;Bcl<=NbQuads;Bcl++) {
			glTexCoord2d(0,0);	glVertex3d(Randez(),Randez(),0);
			glTexCoord2d(1,0);  glVertex3d(Randez(),Randez(),0);
			glTexCoord2d(1,1);	glVertex3d(Randez(),Randez(),0);
			glTexCoord2d(0,1);	glVertex3d(Randez(),Randez(),0);
		}
		glEnd();	
		float Ctn=Chrono.GetLapTime();
		printf ("NbQuads:%i ; Seconds : %f\n",NbQuads,Ctn);	
	//Fin rendu
	glDisable(GL_ALPHA_TEST);
	glutSwapBuffers();
	NbQuads+=10;
	}
}
Je sais que c'est un peu le bazar dans cette fonction. Je l'aivais ecrite pour voir jusqu'a combien de quads je pouvais aller pour avoir un temps de rendu inferieur a 0,0167 seconds. (D'apres mon test, je peux m'autoriser maxi 7 quads )

J'ai beau chercher dans les tuto, les methodes de rendu illustrees ne parlent que de DisplayList (apparament impropres a l'affichage de nombreux polygons aux deplacement independants) ou de glbegin/glend...