Bonjour à tous,
Je ne sais pas s'il s'agit d'un bug connu (je n'ai rien trouvé sur le net à son sujet) et pourtant c'est grave, même s'il a l'air spécifique à ma machine (NVidia Geforce 4 TI 4200 AGP8x sous Windows XP SP2 avec les derniers drivers ForceWare 93.71 pour Geforce 4).
L'exemple que je propose pour mettre en évidence le bug est très simple : il dessine simplement deux formes fermées différentes (un cercle et un carré) à l'aide de glBegin(GL_LINE_LOOP), avec un pinceau pointillé :
Il se passe la chose suivante lorsque je fais varier la valeur de NBPTS :
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 const int NBPTS = 100; const double PI = 3.1415927; // dessine un cercle glBegin(GL_LINE_LOOP); for (double a=0; a<2*PI; a+=2*PI/NBPTS) { glVertex2d(cos(a), sin(a)); } glEnd(); // dessine un carré, pour montrer que ça arrive avec n'importe quelle forme glBegin(GL_LINE_LOOP); for (double a=0; a<8; a+=8.0/NBPTS) { if (a<2) glVertex2d(1-a, 1); else if (a<4) glVertex2d(-1, 1-(a-2)); else if (a<6) glVertex2d(a-4-1, -1); else glVertex2d(1, a-6-1); } glEnd();
- jusqu'à 120 points, aucun problème (voir screenshot 1)
- à partir de 120 points (un peu plus pour le carré), apparaît une ligne parasite joignant le premier point à un point de la figure qui s'"éloigne" le long de la figure lorsque NBPTS augmente, de manière parfaitement déterministe (voir screenshot 2)
- plus j'augmente le nombre de points qui composent la figure, plus de lignes parasites apparaissent, partant toutes du premier point et uniformément répartie (voir screenshot 3)
Observations :
- je n'obtiens ce bug que sur la machine citée en préambule.
- pas de bug lorsque GL_LINE_STIPPLE est désactivé ou que le lineStipple vaut 0xffff (ligne pleine)
- pas de bug avec GL_LINE_STRIP à la place de GL_LINE_LOOP mais ce n'est pas l'effet recherché car je veux dessiner des simples figures fermées en 2D.
Quelqu'un peut-il m'expliquer ce qui se passe ? A qui m'adresser ? Où se situe le problème ? Les drivers ? La carte ?
Merci
Partager