Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1301 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Opengl - glitches

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Opengl - glitches

n°1277688
red factio​n
Posté le 05-01-2006 à 15:59:16  profilanswer
 

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 :  

Code :
  1. glEnable( GL_POLYGON_SMOOTH );
  2.   glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
  3.   glEnable( GL_BLEND );
  4.   glEnable(GL_LINE_SMOOTH);   
  5.   glLinewidth(5.0f);
  6. puis un simple glBegin(GL_LINES );


 
Dans le meme genre : il me trace tout les triangles intermediaire dés que l'alpha et l'aliasing sont activé :/
 
 
http://img205.imageshack.us/img205/9505/untitled11dh.jpg


Message édité par red faction le 05-01-2006 à 15:59:30
mood
Publicité
Posté le 05-01-2006 à 15:59:16  profilanswer
 

n°1277712
bjone
Insert booze to continue
Posté le 05-01-2006 à 17:27:21  profilanswer
 

tu fais des lignes indépendantes ou un strip de lignes ?

n°1277755
theshockwa​ve
I work at a firm named Koslow
Posté le 05-01-2006 à 18:56:33  profilanswer
 

stripe[:aloy]

n°1277763
red factio​n
Posté le 05-01-2006 à 19:39:26  profilanswer
 

Lignes independantes, faire autre chose compliquerait énormement mon rendering path  :o  
 
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 ?)


Message édité par red faction le 05-01-2006 à 21:32:03
n°1278050
bjone
Insert booze to continue
Posté le 06-01-2006 à 10:56:39  profilanswer
 

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)

n°1278055
bjone
Insert booze to continue
Posté le 06-01-2006 à 11:00:50  profilanswer
 

Donc un truc dans ce goût là quoi: a toi de voir ce qui rends le mieux aux inflexions de ta courbe....
http://img203.imageshack.us/img203/6977/lineux7xv.png


Message édité par bjone le 06-01-2006 à 11:01:20
n°1278058
red factio​n
Posté le 06-01-2006 à 11:03:17  profilanswer
 

bjone a écrit :

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:


 
je pensait qu'il y avait une option a activer genre glEnable (something)
 

bjone a écrit :


1) tricher avec des disques à chaque point de connection (bof bof)


 
c'est ce que j'ai fait pour le moment (effectivement c tres bof)
 

bjone a écrit :


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)


 
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 ???

Message cité 1 fois
Message édité par red faction le 06-01-2006 à 11:06:35
n°1278064
bjone
Insert booze to continue
Posté le 06-01-2006 à 11:08:09  profilanswer
 

red faction a écrit :

je pensait qu'il y avait une option a activer genre glEnable (something)
 
bin ouais ce serait top, mais là pour le coup je sais pas du tout
 
c'est ce que j'ai fait pour le moment (effectivement c tres bof)
 
:/
 
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 ???


 
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 ?

n°1278067
red factio​n
Posté le 06-01-2006 à 11:12:13  profilanswer
 

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)

n°1278616
bjone
Insert booze to continue
Posté le 07-01-2006 à 12:06:05  profilanswer
 

c'est marrant ça... bug de driver :/
 
c'est quoi comme carte vidéo ?

mood
Publicité
Posté le 07-01-2006 à 12:06:05  profilanswer
 

n°1278680
retrox
Posté le 07-01-2006 à 13:37:28  profilanswer
 

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.

n°1278727
red factio​n
Posté le 07-01-2006 à 15:09:39  profilanswer
 

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.....

n°1282570
red factio​n
Posté le 12-01-2006 à 22:41:05  profilanswer
 

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Opengl - glitches

 

Sujets relatifs
(delphi) implementer un fond avec opengl en utilisant glfw[OpenGL] Creer un menu
OpenGL : problème de Flou sur les imagesrecherche Programmeur C++/DirectX/OpenGL - Son Of Destiny - RPG 2D/3D
openGL et C++Insérer une image 2D avec OpenGL ???
Insérer image avec GLFW (OpenGL......) ????OpenGL ES/GLUT ES avec MFCs, EVC++
Problème d'animation avec OpenGL.....OpenGL - comment s'y retrouver dans les fonctions ?
Plus de sujets relatifs à : Opengl - glitches


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR