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

  FORUM HardWare.fr
  Programmation
  C++

  OpenGL : opaque derriere multi blending...ca part en sucette

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

OpenGL : opaque derriere multi blending...ca part en sucette

n°877021
methos6900​6
Posté le 19-10-2004 à 14:56:47  profilanswer
 

Bonjour,
 
J'ai un probleme lorsque j'affiche un objet opaque derriere une surface transparente...la surface opaque n'est pa modifié (comme au premier plan )
Le probleme ne vient pas du depth test (c sur) pour preciser mais plutot des mode de blending.
Je dois preciser que mes objet sont texturé en bmp donc sans couche alpha...
 
En gros Suis je obligé de passer en TGA ou PNG pour ces objets??
ou y a t il une autre methode??
merci d'avance :jap:  

mood
Publicité
Posté le 19-10-2004 à 14:56:47  profilanswer
 

n°877025
cris56
Posté le 19-10-2004 à 15:01:52  profilanswer
 

tu peux rajouter  toi meme la couche alpha en passant ton tableau de données de rgb à rgba et en chargeant en GL_RGBA
 
mais montre plutot le code de la partie rendu, j'ai pas trop compris ton probleme (meme un petit screen si possible)

n°877031
chrisbk
-
Posté le 19-10-2004 à 15:09:23  profilanswer
 

oué moi non plus j'ai pas bien compris (tu sais qu'il faut afficher tes surfaces transparentes a la fin, apres les opaques ?)


---------------
NP: HTTP Error 764 Stupid coder found
n°877085
methos6900​6
Posté le 19-10-2004 à 15:58:47  profilanswer
 

oui...
J'ai essaye avec des TGA c est pareil...ca merde
En fait tout se passe bien quand les transparents sont au devant de la scene, tout va bien quand aucun ne se chevauchent
mais quand l'opaque passe devant...il n'est plus opaque!!!
 
et j'ai plus d'idee

n°877092
cris56
Posté le 19-10-2004 à 16:05:23  profilanswer
 

montre le code, ca simplifira les choses :)

n°877100
methos6900​6
Posté le 19-10-2004 à 16:12:13  profilanswer
 

 
 
 
Voila le rendu de test :

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);  
 
 glLoadIdentity();
 glBindTexture(GL_TEXTURE_2D, textures[0].texID);
 
glTranslatef(0.0f,0.0f,-9);
 
//objets opaques
 
 glPushMatrix();
 glEnable(GL_DEPTH_TEST);
 glDisable(GL_BLEND);
 glRotatef(yrot,0.0f,1.0f,0.0f);
 glTranslatef(0.0f,0.0f,-5);
 box();
 glEnable(GL_BLEND);
 glDisable(GL_DEPTH_TEST);
 glPopMatrix();
 
//au cas ou on enleve le blending  
 if(!blend){
glDisable(GL_BLEND);//s il est remi a un moment
glEnable(GL_DEPTH_TEST);
 }
 
 //objets transparents
 glPushMatrix();
 glRotatef(xrot,1.0f,0.0f,0.0f);
 glRotatef(yrot,0.0f,1.0f,0.0f);
 box();
 glPopMatrix();
 
 
 glPushMatrix();
 
 glRotatef(yrot,0.0f,1.0f,0.0f);
 glTranslatef(0.0f,0.0f,+5);  
 box();
 
 glPopMatrix();

 
 
Et comment on fait pour les screen shots, la syntaxe demande un lien web???
j'essaie avec mon chemin:
on verra bien
[img]D:\marc\tutorials\lesson08\Lesson08\Data\shot.jpg[/img]
[img]D:\marc\tutorials\lesson08\Lesson08\Data\shot2.jpg[/img]
 

n°877101
chrisbk
-
Posté le 19-10-2004 à 16:12:51  profilanswer
 

pkoi diable tu vire le depth test ?


---------------
NP: HTTP Error 764 Stupid coder found
n°877102
methos6900​6
Posté le 19-10-2004 à 16:13:03  profilanswer
 

oups ca n'a pas marche... :cry:  
 :na:

n°877104
Kristoph
Posté le 19-10-2004 à 16:14:29  profilanswer
 

Il faut toujours dessiner les surfaces avec alpha après les surfaces sans

n°877105
chrisbk
-
Posté le 19-10-2004 à 16:14:35  profilanswer
 

(upload tes images sur imageshack)


---------------
NP: HTTP Error 764 Stupid coder found
mood
Publicité
Posté le 19-10-2004 à 16:14:35  profilanswer
 

n°877107
chrisbk
-
Posté le 19-10-2004 à 16:15:04  profilanswer
 

Kristoph a écrit :

Il faut toujours dessiner les surfaces avec alpha après les surfaces sans


 
(en les triant de back to front)


---------------
NP: HTTP Error 764 Stupid coder found
n°877108
Kristoph
Posté le 19-10-2004 à 16:17:14  profilanswer
 

chrisbk a écrit :

(en les triant de back to front)


Un problème à la fois stp. On va voir déjà s'il comprend le premier ;)

n°877110
methos6900​6
Posté le 19-10-2004 à 16:19:19  profilanswer
 

ben c est bien ce que je fais...opaque puis transparent
 
et si je vire pas le depth test avant le blending ca fait n'importe koi...

n°877127
cris56
Posté le 19-10-2004 à 16:28:57  profilanswer
 

active le depth test à l'init et n'y touche plus

n°877333
LeGreg
Posté le 19-10-2004 à 19:56:05  profilanswer
 

bon en clair:
 
- depth test enable (read+write)
- opaque geometry, front to back (grossièrement au départ, faudra rafiner si tu découvres qu'un tri plus fin améliore tes performances).
- depth test enable (pour pas que la géométrie transparente s'affiche derriere les objets opaques !)
- la tu as deux solutions. Premiere (couteuse et parfois impossible en pratique) : tu tries tes polygones transparents en back to front. Par polygone !, pour éviter les problèmes d'occlusions mais ça garantit que l'affichage sera correct. Deuxieme solution: tu traces dans un grossier ordre back to front (par objet) en désactivant le depth write (ça introduit quelques artefacts si ta transparence est complexe).  
 
Tu as la derniere solution qui consiste à n'afficher des faces transparentes qu'en mode additif ce qui permet de ne pas trier mais nécessite toujours la désactivation du DEPTH WRITE (et pas du depth test, je ne sais pas si tu vois la distinction).
 
L'utilisation du mode additif c'est en dernier recours parce que ça ne marche que pour certains effets..


Message édité par LeGreg le 19-10-2004 à 20:00:46
n°877339
LeGreg
Posté le 19-10-2004 à 19:58:34  profilanswer
 

Il y a quelques applications pro qui utilisent l'order independent transparency:
http://developer.nvidia.com/object [...] rency.html
 
En general c'est overkill pour les jeux.


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

  OpenGL : opaque derriere multi blending...ca part en sucette

 

Sujets relatifs
[opengl] [linux] probleme de libsupersampling openGL
[OpenGL]L´eau coule et le ciel rouleOpengl animation
problème avec OpenGLmulti-compilation avec gcc sous VisualC++ 6
erreur mysql sortie de nul part ???[opengl] à la recherche des fragment program sur geforce3/4
Download, rien a faire ca part pas[OpenGL] Gestion des extensions
Plus de sujets relatifs à : OpenGL : opaque derriere multi blending...ca part en sucette


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