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 :

Fond dégradé (opengl + qt)


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 5
    Par défaut Fond dégradé (opengl + qt)
    Bonjour,

    Je réalise un viewer 3D avec opengl et qt.
    Je dessine ma scene en faisant un clear en premier, ce qui me donne donc une couleur de fond uniforme.

    J'essaye maintenant de changer cette couleur pour placer un dégradé à la place. Mais je ne sait pas comment faire.

    J'ai eu quelques idées mais je n'ai pu en faire aboutir aucune, faute de connaissances approfondies d'OpenGL :

    - placer une texture avec le dégradé sur un rectangle dessiné à une profondeur lointaine (assez complexe pour moi )
    - dessiner le dégradé sur le qglwidget (facile) et dessiner ma scene avec une couleur de clear transparente (aucune idée de comment faire ... )
    - définir comme couleur de clear une couleur dégradée (est-ce seulement possible ? en tout cas j'ai pas l'impression)

    Donc là je suis à court, je ne sait pas si mes idées sont viables, et si elles le sont je n'arrive pas à les mener à bien.

  2. #2
    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
    La meilleure solution est presque la première que tu cites : il faut que tu crées une texture avec ton dégradé, et que tu plaques celle-ci sur un carré recouvrant l'écran. Pas besoin de le dessiner "loin" : il suffit de paramétrer correctement la matrice de projection d'une part, et de désactiver l'écriture dans le Z-Buffer d'autre part.

  3. #3
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Par défaut
    d'ailleurs, même pas besoin de texture pour un simple degradé, des couleurs de vertex differentes feront probablement l'affaire (à moins de vouloir un dégradé non lineaire)
    * Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
    * pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
    Mes articles

  4. #4
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 5
    Par défaut
    ok, je vais essayer de regarder comment faire ça

    Si quelqu'un a un exemple ou un bout de code qui fait quelque chose du genre, je suis preneur, ça m'aidera à comprendre le principe.

    merci pour les réponses

  5. #5
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 5
    Par défaut
    Ok, j'ai réussi
    Voici grosso modo le pseudo-code que j'ai fait, si ça peut dépanner quelqu'un

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    GLint viewportCamera[4];
    GLint viewportScreen[4];
     
    glDepthMask(GL_FALSE);
     
    glMatrixMode(GL_PROJECTION);
    glPushMatrix();
    glLoadIdentity();
     
    viewportCamera = recuperer_viewportCamera();
     
    glViewport(0,0,viewportCamera[2],viewportCamera[1]);
    gluOrtho2D(0, viewportCamera[2], viewportCamera[1], 0);
     
    viewportScreen[0]=0; viewportScreen[1]=0;
    viewportScreen[2]=viewportCamera[2];
    viewportScreen[3]=viewportCamera[1];
     
    glMatrixMode(GL_MODELVIEW);
    glPushMatrix();
    glLoadIdentity();
     
    glBegin(GL_QUADS);
     
        glColor3f(color1);
        glVertex2i(viewportScreen[0],viewportScreen[1]);
        glVertex2i(viewportScreen[2],viewportScreen[1]);
        glColor3f(color2);
        glVertex2i(viewportScreen[2],viewportScreen[3]);
        glVertex2i(viewportScreen[0],viewportScreen[3]);
     
    glEnd();
     
    glPopMatrix();
    glMatrixMode(GL_PROJECTION);
    glPopMatrix();
     
    glFlush();
     
    glDepthMask(GL_TRUE);

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

Discussions similaires

  1. JTextArea avec fond dégradé
    Par SheikYerbouti dans le forum Composants
    Réponses: 1
    Dernier message: 15/11/2012, 17h14
  2. Programmer sur un fond dégradé
    Par adam974 dans le forum Débuter
    Réponses: 0
    Dernier message: 20/01/2009, 19h55
  3. Fond dégradé pour les diapositives.
    Par flaca dans le forum Powerpoint
    Réponses: 2
    Dernier message: 15/11/2007, 14h59
  4. vb 2005 et Fond Dégradé
    Par wardavb dans le forum Windows Forms
    Réponses: 1
    Dernier message: 18/06/2006, 11h49
  5. [JPanel] [Débutant] Fond dégradé dans un JPanel ??
    Par dymezac dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 15/02/2006, 16h33

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