Opengl - glitches - C++ - Programmation
Marsh Posté le 05-01-2006 à 19:39:26
Lignes independantes, faire autre chose compliquerait énormement mon rendering path
Pour un autre probleme sur le même prog le fait de passer de polys independants a un strip avait resolu pas mal de trucs (yavait enormement de poly a dessiner, tous tres proches les un des autres
Jviens d'essayer avec GL_LINE_LOOP GL_LINE_STRIP mais ca donne exactement la même chose
EDIT : apres reflexion, effectivement seul un loop ou un strip pourrait resoudre mon probleme (comment opengl peut il relier deux ligne independantes ?)
Marsh Posté le 06-01-2006 à 10:56:39
hé oui c'est ça la blague.
sinon si ça marche pas en strip et que l'opengl est pas capable de d'ajuster la connectivité des lignes il reste deux solutions:
1) tricher avec des disques à chaque point de connection (bof bof)
2) abandonner les lignes et passer à des triangles ou des quads, générant les segments intermédiaires avec des courbes de bezier (je te fais un dessin)
Marsh Posté le 06-01-2006 à 11:00:50
Donc un truc dans ce goût là quoi: a toi de voir ce qui rends le mieux aux inflexions de ta courbe....
Marsh Posté le 06-01-2006 à 11:03:17
bjone a écrit : hé oui c'est ça la blague. |
je pensait qu'il y avait une option a activer genre glEnable (something)
bjone a écrit : |
c'est ce que j'ai fait pour le moment (effectivement c tres bof)
bjone a écrit : |
un simple trait qui relie les deux lignes serait deja une grande evolution
cependant pour dessiner les lignes soi-même ca reste compliqué
(trouver la perpendiculaire a la droite....)
pour le 2e probleme tu vois pas d'ou ca pourrait venir ???
Marsh Posté le 06-01-2006 à 11:08:09
red faction a écrit : je pensait qu'il y avait une option a activer genre glEnable (something) |
pour ton deuxième problème, j'ai du mal a visualiser ce que c'est censé être ?
tu as deux triangles c'est ça ? avec du pixel popping à l'intersection des deux ?
Marsh Posté le 06-01-2006 à 11:12:13
disons que je dessine un GL_QUADS et que (c logique) le driver me le decoupe en 2 triangles...
le probleme c que si j'active le blend et l'antialias, il me dessine tout les triangles intermidiaires (d'ou la ligne en gris qui fait la diagonale sur mon rectangle)
Marsh Posté le 07-01-2006 à 12:06:05
c'est marrant ça... bug de driver
c'est quoi comme carte vidéo ?
Marsh Posté le 07-01-2006 à 13:37:28
C'est un comportement prévisible.
Lorsque le rasterizer sort des samples avec antialiasing, les fragments avec couverture partielle vont passer dans le pipeline comme les autres, avec le facteur de couverture qui sera utilisé pour la fonction de blending (ce qui donne l'effet antialiasé). Maintenant une fois que le fragment en question est ecrit dans le buffer de destination (backbuffer ou plus généralement rendertarget), le zbuffer est aussi mis a jour avec le fragment partiellement couvert. Au moment où la ligne suivante (ou segment de ligne suivant) arrive, il est évident que les fragments des bords (ceux a couverture partielle) des lignes successives se superposent. Sauf que ceux de la nouvelle ligne seront jetés à cause du test sur le zbuffer. On restera donc avec des pixels qui seront typiquement plus sombre (si le fond est sombre) à la jointure.
Voir ce thread pour plus d'infos.
Marsh Posté le 07-01-2006 à 15:09:39
3) the GL spec says linestrips are treated as groups of line segments. there's no handling of segment joining or mitering. |
Voila au moins c'est clair
en tout cas merci a tout ceux qui ont repondu
jvais essayer de rendre moi meme la ligne par coup de GL_QUADS ca devrait aller mieux.....
Marsh Posté le 05-01-2006 à 15:59:16
Slt,
J'ai quelques problèmes lors du rendu d'une ligne en opengl. En effet, il se dessine quelques pixels noirs entre les deux extremités de chaque trait.
Apparament, ça viendrait du fait qu'opengl ne "relie pas les deux extremités de la ligne entre eux (comme montré sur le dessin en bas au milieu)
avant de tracer la ligne je fait ceci :
Dans le meme genre : il me trace tout les triangles intermediaire dés que l'alpha et l'aliasing sont activé
Message édité par red faction le 05-01-2006 à 15:59:30