Bonjour à tous,
suite à un projet que je développe pour l'université, je dois afficher dans mon programme (à l'aide d'un tableau bi-dimensionnel stockant toutes les valeurs) plus de 77millions de pixels...Et c'est là que le bas blesse, l'affichage marche, certes c'est un peu long pour s'afficher, mais dès lors qu'il s'agit de déplacer la caméra et donc réaliser de nouveau un glutPostRedisplay pour refaire appel à la fonction d'affichage, j'ai droit encore au même temps d'attente... ainsi utiliser le programme devient vite frustrant (même les ventilos du pc ont chauds lool)
Alors ma question est assez simple : comment puis-je faire pour que l'affichage soit plus rapide afin que l'utilisation du programme devienne plus fluide.
Voici ma fonction d'affichage :
Pour précision ici m_NL vaut 10801 et m_NG vaut 7201 d'où cette boucle sur plus de 77 millions de pixels. Comme vous pouvez le constater j'ai mis en place un frustrum culling pour optimiser l'affichage mais celà ne reste toujours pas satisfaisant,
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 void Draw_() { Vec3 p; int pas_color ; float ind_color ; pas_color = floor((float)((abs(t->Elev_Min)+t->Elev_Max)/256)); glPointSize(1); glBegin(GL_POINTS); for(int i=0; i< t->m_NL ; i=i++) { for(int j=0;j< t->m_NG; j=j++) { p.x = i ; p.y = 0 ; p.z = j; if ((frustum.pointInFrustum(p) != FrustumG::OUTSIDE)) { if((t->ppTE[i][j]!=Zmin)&&(t->ppTE[i][j]!=Znc)) { ind_color = ((float)(t->ppTE[i][j])/(float)(256*pas_color))*2; if(ind_color <= 1)glColor3f(ind_color,ind_color,ind_color); else glColor3f(1.,1.,1.); glVertex3f(i,0,j); } } } } glEnd(); }
Votre aide est donc comme toujours la bienvenue![]()
Merci d'avance,
Partager