OpenGL : opaque derriere multi blending...ca part en sucette - C++ - Programmation
Marsh Posté le 19-10-2004 à 15:01:52
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)
Marsh Posté le 19-10-2004 à 15:09:23
oué moi non plus j'ai pas bien compris (tu sais qu'il faut afficher tes surfaces transparentes a la fin, apres les opaques ?)
Marsh Posté le 19-10-2004 à 15:58:47
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
Marsh Posté le 19-10-2004 à 16:12:13
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]
Marsh Posté le 19-10-2004 à 16:12:51
pkoi diable tu vire le depth test ?
Marsh Posté le 19-10-2004 à 16:14:29
Il faut toujours dessiner les surfaces avec alpha après les surfaces sans
Marsh Posté le 19-10-2004 à 16:14:35
(upload tes images sur imageshack)
Marsh Posté le 19-10-2004 à 16:15:04
Kristoph a écrit : Il faut toujours dessiner les surfaces avec alpha après les surfaces sans |
(en les triant de back to front)
Marsh Posté le 19-10-2004 à 16:17:14
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
Marsh Posté le 19-10-2004 à 16:19:19
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...
Marsh Posté le 19-10-2004 à 19:56:05
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..
Marsh Posté le 19-10-2004 à 19:58:34
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.
Marsh Posté le 19-10-2004 à 14:56:47
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