opengl: intersection de segment en mode blend.

opengl: intersection de segment en mode blend. - C - Programmation

Marsh Posté le 23-01-2008 à 16:17:49    

Bonjour,
 
Avec opengl, je dessine une serie de segment en mode transparent, et aux intersections, les transparences s'additionnent comme vous pouvez le voir sur le screenshot.
 
http://img171.imageshack.us/img171/2416/blendprobmx8.png
 
 
Existe-t-il un mode a activer pour eviter cela?
Merci.
 
Le code:

Code :
  1. glEnable(GL_BLEND);
  2. glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
  3. glColor4ub(255,0,0,255);
  4. glBegin(GL_QUADS);
  5.  glVertex3f(-1.0f, 2.0f, 0.0f);
  6.  glVertex3f( 2.0f, 2.0f, 0.0f);
  7.  glVertex3f( 2.0f,-1.0f, 0.0f);
  8.  glVertex3f(-1.0f,-1.0f, 0.0f);
  9. glEnd();
  10. glEnable(GL_LINE_SMOOTH);
  11. glLineWidth(10);
  12. glColor4ub(143,196,255,100);
  13. glBegin(GL_LINE_STRIP);
  14.  glVertex3f(-1.0f, 1.0f, 0.0f);
  15.  glVertex3f( 1.0f, 1.0f, 0.0f);
  16.  glVertex3f( 2.0f,-1.0f, 0.0f);
  17.  glVertex3f(-1.0f,-2.0f, 0.0f);
  18. glEnd();
  19. glPointSize(10);
  20. glEnable(GL_POINT_SMOOTH);
  21. glBegin(GL_POINTS);
  22.  glVertex3f( 1.0f, 1.0f, 0.0f);
  23. glEnd();


Message édité par nicolas_uk le 23-01-2008 à 16:18:21
Reply

Marsh Posté le 23-01-2008 à 16:17:49   

Reply

Marsh Posté le 24-01-2008 à 10:13:07    

le mieux c'est de générer toi même la chose en gérant la connexion en faisant un truc style:  
= /
   ||
 
Donc avoir un générateur de géométrie propre et de ne plus utiliser la primitive de ligne et sa propriété de taille.
 
sinon avec le stencil il doit y avoir d'éviter l'overdraw, mais bon si il clearer le stencil entre chaque paquet de lignes...

Reply

Marsh Posté le 25-01-2008 à 09:37:31    

bjone a écrit :

le mieux c'est de générer toi même la chose en gérant la connexion en faisant un truc style:  
= /
   ||
 
Donc avoir un générateur de géométrie propre et de ne plus utiliser la primitive de ligne et sa propriété de taille.
 
sinon avec le stencil il doit y avoir d'éviter l'overdraw, mais bon si il clearer le stencil entre chaque paquet de lignes...


 
Ok merci.
Je vais voir ce que je peux faire, a mon avis, je vais voir egalement a utiliser une autre technique d'antialiasing.
 
Tu penses qu'en terme de performance, je gagnerai vraiment a creer mon propre generateur de geometrie ?

Reply

Marsh Posté le 25-01-2008 à 12:12:50    

au niveau perfs, entre une préparation déportée vers le driver, et une implémentation basée sur les VBO + indexbuffer, généralement oui c'est plus rapide.
 
d'autant plus que comme tu vois, très rapidement tu tapes dans des limites de fonctionnalitées :/

Reply

Marsh Posté le 25-01-2008 à 13:17:35    

merci bcp pour toutes ces informations.
 
Je vais me documenter sur tout ça :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed