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 :

objet opaque devant objet texturé


Sujet :

OpenGL

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 141
    Points : 177
    Points
    177
    Par défaut objet opaque devant objet texturé
    Bonjour,

    J'essaye de dessiner un objet opaque (sans transparence) devant un objet texturé et je commence à devenir fou
    avec la fonction glBlendFunc . J'ai essayé pas mal de combinaisons mais pas la bonne malheureusement .

    Les objets sont dessinés dans l'ordre du plus loin vers le plus proche (vers la camera).

    L'objet texturé avec ma texture :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public void draw(GL10 gl)
    ....
    gl.glColor4f(1f, 1f, 1f, 1f);		
    gl.glEnable(GL10.GL_TEXTURE_2D);
    gl.glEnable(GL10.GL_BLEND);
    gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
    ....
    L'objet (non texturé) seulement une couleur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public void draw(GL10 gl)
    ....
    gl.glColorPointer(4, GL11.GL_UNSIGNED_BYTE, 0, mColorBuffer);
    gl.glEnableClientState(GL10.GL_COLOR_ARRAY);
    gl.glEnable(GL10.GL_BLEND);
    gl.glBlendFunc(GL10.GL_ONE, GL10.GL_SRC_COLOR);
    ....
    Avec une couleur argb(255,255,0,0) par exemple, l'objet prend une saturation en fonction de la couleur local des pixels de la texture de dessous.
    Et l'objet est transparent (je vois la texture).

    Bref, j'aurai voulu un rouge vif opaque dans un premier temps.

    Ensuite si je peux jouer un peu sur la transparence de mon objet ça serait pas mal, mais pas la saturation.

    Merci

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 860
    Points : 219 062
    Points
    219 062
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Pour vérifier les fondus, vous pouvez utiliser cet outil : http://www.andersriggelsen.dk/glblendfunc.php
    Sinon, je n'ai pas vu le soucis
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 141
    Points : 177
    Points
    177
    Par défaut
    Merci pour cette réponse et le lien.

    Si je reformule, mes réglages unitaires semblent bons, mais ça serait plutôt l’enchaînement qui ne l'est pas
    (au niveau de mon render) ?

    Dois-je faire des settings dans celui-ci ?

    Merci

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 860
    Points : 219 062
    Points
    219 062
    Billets dans le blog
    120
    Par défaut
    Pouvez-vous faire une série de test, écrire les paramètres que vous utilisez et faire des captures, afin que l'on saisisse mieux le bogue, s'il vous plait.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 141
    Points : 177
    Points
    177
    Par défaut
    Bonjour,

    J'ai fait du nettoyage dans mes classes d'objet à afficher en supprimant les appels relatifs à GL_BLEND et
    en remontant tout ça au niveau de ma classe SceneRender.

    Par contre il me reste un effet bizarre (changement de la teinte) en fonction du fond local (texture).
    Le curseur est initialisé avec la couleur argb(255, 255, 0, 0) : rouge vif opaque.

    Ma classe SceneRender
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    ...
    public void onDrawFrame(GL10 gl) {
      ...
      gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
      gl.glMatrixMode(GL10.GL_MODELVIEW);
      gl.glLoadIdentity();
     
      gl.glEnable(GL10.GL_BLEND);
      gl.glBlendFunc(GL10.GL_ONE, GL10.GL_ONE_MINUS_SRC_ALPHA);
      ...
      // draw
      positionMarker.draw(gl);
      ...
      gl.glDisable(GL10.GL_BLEND);
    }
    ...
    Ma classe PostionMarker :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public void draw(GL10 gl) {
      gl.glVertexPointer(3, GL10.GL_FLOAT, 0,  mFVertexBuffer);
      gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
      gl.glColorPointer(4, GL11.GL_UNSIGNED_BYTE, 0, mColorBuffer);
      gl.glEnableClientState(GL10.GL_COLOR_ARRAY);
      gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 3);
      gl.glDisableClientState(GL10.GL_COLOR_ARRAY);
      gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
    }
    Pièce jointe 144951
    Pièce jointe 144952

  6. #6
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 860
    Points : 219 062
    Points
    219 062
    Billets dans le blog
    120
    Par défaut
    En théorie, il arrive souvent qu'il faille faire un glColor4f(1,1,1,1) avant de dessiner un truc (pour être sur qu'il n'y ai pas de teinte). Pouvez-vous tenter.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

Discussions similaires

  1. Objet opaque traversant un objet transparent
    Par djtinou666 dans le forum WebGL
    Réponses: 5
    Dernier message: 06/06/2013, 20h16
  2. image devant objet
    Par franck.automaticien dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 18/04/2006, 14h40
  3. Cacher des objets grâce à l'Objet TreeView
    Par The_Warlord dans le forum Composants VCL
    Réponses: 2
    Dernier message: 08/11/2004, 09h50
  4. [Relationnel Objet] Tables d'Objet et les OID
    Par Laurent Dardenne dans le forum Administration
    Réponses: 5
    Dernier message: 24/03/2004, 18h11
  5. "Mixer" objet et non-objet ?
    Par zapho dans le forum UML
    Réponses: 5
    Dernier message: 19/03/2004, 14h43

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