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 :

[glut]afficher une partie d'une image


Sujet :

OpenGL

  1. #1
    Rédacteur

    Avatar de khayyam90
    Homme Profil pro
    Architecte de système d’information
    Inscrit en
    Janvier 2004
    Messages
    10 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Janvier 2004
    Messages : 10 369
    Points : 40 164
    Points
    40 164
    Par défaut [glut]afficher une partie d'une image
    bien le bonjour,

    mon problème du jour est le suivant : je souhaite afficher une partie d'une image, laquelle partie n'est pas d'une forme géométrique des plus simples.

    certains pixels seraient donc affichés au premier plan et d'autres ne seraient pas de tout affichés permettant ainsi de voir l'arrière de la scène. (comme un masque)

    j'arrive à charger mon image et à créer la texture correspondante (bien que rectangulaire et comprenant les pixels à ne pas afficher), mais je ne sais pas comment ne pas afficher certains de ses pixels.

    pour info, les pixels à ne pas afficher sont ceux valant (0,0,255)

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

  2. #2
    Membre à l'essai
    Inscrit en
    Juillet 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 15
    Points : 17
    Points
    17
    Par défaut
    hello,

    En gros tu voudrais que le texte soit transparent ;o)

    Alors, ce que j'ai fait pour ca, c'est que lorsque tu charge ta texture tu la charge en RGBA
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    unsigned char t[lar*lon*3];
    glTexImage2D(GL_TEXTURE_2D, 0,3, lar,lon, 0, GL_RGBA, GL_UNSIGNED_BYTE, t);
    malgré que le tablo soit que pour 3 couleur, opengl prend la moyenne des trois comme valleure alpha (du moins c ce que j'en ai conclu)

    ensuite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    glEnable(GL_ALPHA_TEST);
    glAlphaFunc(GL_GEQUAL, 0.5f);
    et ce qu'il va se passer c'est que seulement les pixels avec un alpha plus grand ou égal à 0.5 serons affiché !! Et affiché en pleine couleur si tu n'as pas activé le blinding !!!

    Le seul pb, c'est que tu ne peux plus utiliser ton alpha pour faire de la transparence sans avoir quelque probléme... mais tu peux bidouillé en réservant certaine valeure d'alpha (0.5f par exemple) pour dire que seule les valeure différente de 0.5 sont affichée : glAlphaFunc(GL_NOTEQUAL,0.5f).
    et si tu veux un objet à moitié tranparent tu lui donne un alpha de 0.499f
    ... tu peux aussi utiliser 0 comme valeure particuliére, en effet il est rare que l'on veuille voir un objet ayant un alpha à 0.


    pour l'alpha func :
    http://www.opengl.org/documentation/...alphafunc.html

    pour un exemple d'utilisation :
    http://pierre.lando.free.fr/jdd/
    ou maisonmonde, j'utilise alphafunc pour ma class de texte texturé.

    En fait cette fonction est assé géniale, elle est souvent utiliser pour dessiner des arbres par exemple, tu affiche 4 pauv' triangle avec la texture qui va bien, tu obtient un magnifique sapin avec plein de branches(tux racer par exemple fait comme ca)

    Trident.
    P.S. du coup tu auras droit d'utiliser la couleur 0,0,255 ;o)

  3. #3
    Rédacteur

    Avatar de khayyam90
    Homme Profil pro
    Architecte de système d’information
    Inscrit en
    Janvier 2004
    Messages
    10 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Janvier 2004
    Messages : 10 369
    Points : 40 164
    Points
    40 164
    Par défaut
    aa bah voilà, je m'en suis sorti en chargeant une image 24 bits en incorporant tous les 4 octets un octet à 255 et un octet à 0 si c'était un (0,0,255).
    je charge cette texture en 32 bits et j'utilise les fameux

    glAlphaFunc(GL_GEQUAL, 1);
    glEnable(GL_ALPHA_TEST);

    merci bien pour ton aide rapide

  4. #4
    Membre à l'essai
    Inscrit en
    Juillet 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 15
    Points : 17
    Points
    17
    Par défaut
    nop

    note, un glAlphaFunc(GL_EQUAL, 1); suffi ici ;o)
    GEQUAL : plus grand ou égal
    EQUAL : égal

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Copier une partie d'une form dans une image
    Par Duan dans le forum Débuter
    Réponses: 5
    Dernier message: 11/05/2009, 16h16
  2. donner une couleur a une partie d'une forme
    Par ralf91 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 04/04/2008, 17h02
  3. Réponses: 1
    Dernier message: 04/04/2008, 12h14
  4. Sélectionner seulement une partie d'une valeur d'une cellule
    Par ArthurO0O dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 20/08/2007, 11h05
  5. masquer une partie d'une vidéo par une banniere
    Par lezabour dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 16/10/2006, 16h47

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