IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenGL Discussion :

Problème d'alpha


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    pot
    pot est déconnecté
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 46
    Par défaut Problème d'alpha
    Salut,
    J'ai un petit problème: j'ai dans mon code un cube transparent jaune, et deux autres cubes blanc non transparents.
    Le petit problème, c'est que j'arrive a voir à travers le cube jaune seulement un des deux cubes blancs, qui sont pourtant pareils, je comprend pas pourquoi la transparence ne marche qu'avec un des deux cubes
    Voici l'ordre dans lequels sont rendu les cubes :
    - le cube blanc que je peux voir a travers le jaune
    - le jaune
    - le cube blanc que je ne vois pas à traver le jaune...

    Quelqu'un a-t-il une idée ?

  2. #2
    Membre éprouvé Avatar de ken_le_videur
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 129
    Par défaut
    Désactive le Z-buffer

  3. #3
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    C'est normal. Lorsque ton cube jaune est dessiné il n'y a rien derrière, et lorsqu'ensuite ton second cube blanc est dessiné... et bien il n'est pas dessiné (il est viré par le Z-Buffer), étant donné que le cube jaune se trouve plus près.

    C'est pour cette raison que les faces transparentes doivent quoiqu'il arrive être dessinées back to front, et après les faces non-transparentes.

  4. #4
    pot
    pot est déconnecté
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 46
    Par défaut
    Merci de vos réponses !
    Mais j'ai encore un problème avec ça :
    Si je désactive le Z-buffer ( glDisable(GL_DEPTH_TEST) ), le problème est résolu pour la transparence, mais j'arrive a voir le cube jaune transparent a travers d'un des cubes blanc non transparent... c'est pas logique
    Donc c'est quoi la solution ? Il faut absolument afficher les objets contenants de l'alpha après ceux qui n'en ont pas ? C'est un peu bizarre de faire ça, car si un seul vertex d'un objet a un alpha different de 1, il faudra que je l'affiche après les autres ??
    ça me donne envie de passer à DirectX, ce genre de truc

  5. #5
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Si je désactive le Z-buffer ( glDisable(GL_DEPTH_TEST) ), le problème est résolu pour la transparence, mais j'arrive a voir le cube jaune transparent a travers d'un des cubes blanc non transparent... c'est pas logique
    Si, c'est logique, et non, ce n'est pas la bonne solution.

    Donc c'est quoi la solution ? Il faut absolument afficher les objets contenants de l'alpha après ceux qui n'en ont pas ?
    Oui, c'est la seule solution (enfin, il existe une technique exotique à base de shaders mais à utiliser seulement pour faire joujou).

    C'est un peu bizarre de faire ça, car si un seul vertex d'un objet a un alpha different de 1, il faudra que je l'affiche après les autres ??
    Encore pire que ça : si un objet comprte des faces transparentes et des faces non transparentes, il faudra découper celui-ci pour afficher les faces non transparentes d'abord, et les faces transparentes ensuite et dans le bon ordre par rapport aux autres faces transparentes de la scène.

    ça me donne envie de passer à DirectX, ce genre de truc
    Même combat avec DirectX, c'est un problème lié à la programmation 3D et non à l'API.

  6. #6
    pot
    pot est déconnecté
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 46
    Par défaut
    Je rêve
    En plus, j'utilise les vertexarrays pour l'affichage.... ça veut dire qu'il faut que je fasse un tri de toutes les données, que je mette ça en mémoire, et que je recommence dès que je veux ajouter des vertices ?
    C'est la première fois qu'on me dit ça, y a pas une autre solution ??
    C'est embêtant, surtout vu que c'est "juste" pour l'alpha

Discussions similaires

  1. Problème Cpcdos alpha 3.9
    Par Invité dans le forum Cpcdos
    Réponses: 7
    Dernier message: 05/01/2015, 19h29
  2. Problème version alpha play store.
    Par shirohige dans le forum Android
    Réponses: 4
    Dernier message: 12/03/2014, 21h25
  3. [Direct3d9] Problème d'alpha blending.
    Par F-fisher dans le forum DirectX
    Réponses: 10
    Dernier message: 03/09/2010, 01h29
  4. Problème avec alpha dans un clip
    Par Buuhh dans le forum ActionScript 3
    Réponses: 1
    Dernier message: 08/01/2009, 22h00
  5. [C#][Dx9] Problème d'alpha blending
    Par funkydata dans le forum DirectX
    Réponses: 3
    Dernier message: 13/06/2007, 16h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo