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

  FORUM HardWare.fr
  Programmation
  Divers

  [OpenGL] Transparence?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[OpenGL] Transparence?

n°532936
Jer
Posté le 06-10-2003 à 23:51:54  profilanswer
 

Dans le cadre de création d'un moteur 3D, j'essaye d'activer la transparence d'un objet à l'aide des insctructions

Code :
  1. glEnable(GL_BLEND);
  2. glBlendFunc(GL_SRC_ALPHA,GL_ONE);


 
Le probléme c'est que les faces cachés de l'objets ne sont pas dessinées ce qui est très génant lors du rendu de l'objet transparent.
J'ai pu résoudre ce probléme en désactivant le test du z-buffer le temps du rendu de l'objet grace à l'instruction

Code :
  1. glDepthMask(GL_FALSE);


 
Bien sure je désactive le blending et réactive le DephMask une fois mon objet affiché.
 
Un autre probléme c'est posé, les objets qui passent derrière mon objet transparent sont rendu comme si ils étaient devant (à cause du z-buffer désactivé pour cet objet).
Ca a pu être détourné en dessinant mon objet transparant en tout dernier par contre le probléme persiste lorsque qu'un objet transparant passe par derrière un autre objet trasnparant (on ne sait pas lequel est devant et lequel est derrière?)
Y'a t'il une manière de détourner celà d'une manière ou d'une autre par exemple grace à la procédure glDepthFunc() ou à l'aide d'instructions diverses?
Merci de votre aide

mood
Publicité
Posté le 06-10-2003 à 23:51:54  profilanswer
 

n°532941
chrisbk
-
Posté le 06-10-2003 à 23:59:55  profilanswer
 

y'a pas 250 fonctions miracles malheureusements :
 
1)rendre les objets transparent en fin de process  
2)si plusieurs objets transparent, alors les rendres en back to front (un petit tri ici)
 
et si tes objets transparent se superposent ? ben la fo triller par ...face. A l'ancienne;
Note que y'a un truc qui s'appelle "depth peeling" cense eviter ce pb, mais je ne peux guere t'en dire plus (recherche google et tout ca)


Message édité par chrisbk le 07-10-2003 à 00:01:04
n°532951
Jer
Posté le 07-10-2003 à 00:31:12  profilanswer
 

J'ai trouvé une petite explication assé peu précise à cette adresse http://www.cse.msu.edu/~cse472/lab13.html et ça rejoind asser bien ce dont tu parlais (triage back to front des objets manuelement)
Si quelqu'un a une autre idée ou une algorithme basé sur cette technique qu'il les partages
Merci

n°532958
chrisbk
-
Posté le 07-10-2003 à 00:41:17  profilanswer
 
n°533015
Jer
Posté le 07-10-2003 à 08:50:51  profilanswer
 

Merci beaucoup pour ce lien, y'a plein de tutos utile je ne connaissais pas

n°533021
chrisbk
-
Posté le 07-10-2003 à 09:04:13  profilanswer
 

stun lien pour l'elite :sol:

n°533186
Jer
Posté le 07-10-2003 à 13:05:06  profilanswer
 

J'ai pu résoudre le probléme d'affichage de mes texture contenant une zone transparante grace à l'activation des instruction:

Code :
  1. glEnable(GL_ALPHA_TEST);
  2. glAlphaFunc(GL_GREATER, 0.0);


qui vont mettre à jour dans le z-buffer uniquement les pixels avec une valeur Alpha suppérieure à 0, par contre le probléme demeure toujours pour les objets totalement translucides

n°534059
LeGreg
Posté le 08-10-2003 à 03:55:47  profilanswer
 

Jer a écrit :


qui vont mettre à jour dans le z-buffer uniquement les pixels avec une valeur Alpha suppérieure à 0, par contre le probléme demeure toujours pour les objets totalement translucides


 
bienvenu dans le monde de la 3D.
 
Il n'y a pas de solutions miracle que de l'huile de coude
 
LeGreg


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

  [OpenGL] Transparence?

 

Sujets relatifs
[openGL] Probleme de systeme de coordonnées fenetre[OpenGL] arrive po a coller une texture sur une subWindow :'( [resolu]
[Delphi] Problème de transparence d'images[OpenGL] NV_Fence
Quel moteur 3d opengl me conseillez-vous ?[C++ OPENGL] Affichage de cubes superposés et tampon de profondeur
[C][OpenGL][Linux] compil', glut, librairies, ...[VC++/OpenGl] Redimensionner la zone d'affichage
[C/C++] Loader 3DS pour OpenGLProbleme OPENGL , affichage des couleurs en non transparence
Plus de sujets relatifs à : [OpenGL] Transparence?


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