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 :

Transparence via SDL_TTF (Texte en mode Blended)


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 14
    Par défaut Transparence via SDL_TTF (Texte en mode Blended)
    Bonjour, je suis nouveau ici, et je débute plus ou moins avec l'api OpenGL
    avant de me renvoyé vers la faq , je l'ai lu de long en large, ainsi que le forum

    voici mon problème :



    le texte est bien transparent, du moins son contour, mais le texte en lui même est aussi "semi" transparent , c'est à dire que l'on peut voir au travers ce qui se passe derrière

    j'active ceci avant le rendu sur le quad
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        glDisable(GL_DEPTH);
        glDisable(GL_DEPTH_TEST);
     
        glEnable(GL_ALPHA_TEST);  
        glEnable(GL_BLEND);
        glBlendFunc(GL_ONE,GL_ONE);
     
        glAlphaFunc(GL_LESS,0.9);
    Je dois certainement mal utilisé le glBlendfunc() ?
    j'ai essayé aussi de joué sur la transparence avec glcolor4f() , mais cela ne change rien.
    si je ne désactive pas le GL_DEPTH & GL_DEPTH_TEST la 3D passe devant

    @+

  2. #2
    Membre confirmé Avatar de lXT95l
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 106
    Par défaut
    Salut,
    pour l'alpha test tu a deux solution :
    soit par l'alpha test d'ogl (glEnable(GL_ALPHA_TEST)
    soit par le blend d'ogl (glEnable(GL_BLEND); avec le blendfunc appropié)

    La tu utilise les deux, ce qui est inutile de plus, comme tu la dis, tu utilise mal glBlendFunc();
    Le plus simple
    reste donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        glDisable(GL_DEPTH);
        glDisable(GL_DEPTH_TEST);
         glEnable(GL_ALPHA_TEST);  
        glAlphaFunc(GL_LESS,0.9);

    Personnelement je fais comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
         glDisable(GL_DEPTH_TEST);
     
         glEnable(GL_ALPHA_TEST);
     
         glAlphaFunc(GL_GREATER, 0.3f);

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 14
    Par défaut
    Merci pour la réponse, j'ai réessayé avec uniquement l'apha, ca ne marche pas, mon texte disparait de l'écran
    j'utilise donc uniquement le blending, mais le problème est toujours là...
    Qu'est ce que je peut mettre dans glblendfunc() a part GL_ONE & GL_ONE?

  4. #4
    Membre confirmé Avatar de lXT95l
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 106

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 14
    Par défaut
    Merci du liens mais je suis déjà y allé jeté un oeil , de plus cette page ne résout pas mon problème.
    je résume :
    je créer un SDL_Surface en 32bits en mode rgba
    je lui applique le render_text_blended de sdl_ttf dessus
    j'affiche le résultat en activant ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    glDisable(GL_DEPTH);
    glDisable(GL_DEPTH_TEST);
    glEnable(GL_BLEND);
    glBlendFunc(GL_ONE,GL_ONE);
    le contour de mon texte est bien transparent, mais le texte lui meme est transparent aussi ( un p'tit peu , pas totalement ) cf: la 1°image en haut
    a mon avis il faut que je fasse un rendu offscreen de mon texte sur un fond noir...

    ++


    Edit :

    Pour être plus précis , j'ai un texte de couleur rouge (255,0,0)
    en fond de couleur vert (0,255,0)
    et en final, au lieu d'avoir un texte rouge , j'obtient un texte jaune

  6. #6
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Dans cette source,

    http://jeux.developpez.com/sources/s...e#TEXTE_OpenGL

    Il y a deux versions du code, une qui rend le texte transparent comme tu l'as et une sans.

    Je ne sais plus exactement l'ordre des appels mais en principe la solution est là-dedans.

    Jc

Discussions similaires

  1. Réponses: 5
    Dernier message: 19/03/2006, 08h39
  2. Réponses: 3
    Dernier message: 11/01/2006, 12h01
  3. Accéder au contenu d'un fichier via une URL en mode binaire
    Par sbelli dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 11/10/2005, 10h25
  4. [LG] Ecrire du texte en mode graphique
    Par maind5or dans le forum Langage
    Réponses: 2
    Dernier message: 05/08/2005, 12h55
  5. Insertion d'un texte en mode graphique
    Par Grinta dans le forum Assembleur
    Réponses: 1
    Dernier message: 13/05/2005, 06h50

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