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 :
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 )
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; } }
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...
Partager