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 :

dessiner texte 2D dans une scène en 3D


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 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 21
    Par défaut dessiner texte 2D dans une scène en 3D
    Bonjour,

    j'ai un problème qui peut paraître simple, mais sur lequel je me tire les cheveux dessus depuis quelques jours: j'ai une scène en 3D dans lequel je souhaiterai afficher du texte 2D. Jusqu'ici tout va bien.....
    le petit truc en plus, c'est que je souhaiterais que mon texte 2D s'affiche à une position donnée dans la scène 3D. Et là je galère..... Vous me suivez?

    en gros pour donner un exemple simple, j'ai un repère en 3D avec 3 GL_LINES, une pour chaque axe, et je souhaiterais qu'au bout de mes axes s'affiche une légende (donc un texte 2D, mais qui soit toujours visible "de face" et qui ne subisse pas de transformations lorsqu'on tourne l'angle de vue ou autre....)

    Une idée???

  2. #2
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 89
    Par défaut
    alors si je te dis pas de bêtises voici de quoi te faciliter la tâche en gros le principe est de récupérer les matrices de projection et perspective d'opengl :
    Dans le code suivant LARG et HAUT correspondent à la taille de ta fenêtre 3D
    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
     
    void setOrthographicProjection() 
    {
    	// Passage en mode projection
    	glMatrixMode(GL_PROJECTION);
    	// Sauvegarde de la matrice précédente contenant
    	// les paramètres de la projection en perspective
    	glPushMatrix();
    	// Reset de la matrice
    	glLoadIdentity();
    	// Crée un espace 2D ortho.
    	gluOrtho2D(0, LARG, 0, HAUT);
    	// Inversion de l'axe y, positif vers le bas
    	glScalef(1, -1, 1);
    	// Translate le point du coin bas-gauche 
    	// au coin haut-gauche
    	glTranslatef(0, -HAUT, 0);
    	glMatrixMode(GL_MODELVIEW);
    }
    // Fct permettant de repasser en perspective après avoir écrit le texte
    void resetPerspectiveProjection() {
    	// Attribue la matrice courante à celle de projection
    	glMatrixMode(GL_PROJECTION);
    	// Restaure les paramètres précédents
    	glPopMatrix();
    	// Retour à la matrice GL_MODELVIEW
    	glMatrixMode(GL_MODELVIEW);
    }
    Et pour l'utilisation dans ton affichage 3D tu feras :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    setOrthographicProjection();
          // mets ici ta fonction d'affichage 2D
    resetPerspectiveProjection();
    Voili voilou, j'espère que ça t'aidera et que ça va marchouiller

  3. #3
    Membre émérite
    Avatar de Happy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2005
    Messages : 665
    Par défaut
    Ou alors récupérer la position 2D de l'objet 3D avec gluProject().

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 21
    Par défaut
    Bon j'ai tenté un mix des 2 techniques (repositionnement en Ortho2D, puis gluProject) et tout fonctionne maintenant parfaitement!

    Je connaissais pas gluProject(), cette fonction est vraiment super utile!

    Merci beaucoup pour vos réponses!

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 89
    Par défaut
    De rien content que tout marche nickel pour toi

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 04/04/2007, 12h51
  2. comment mettre du texte formaté dans une frame?
    Par afrikha dans le forum GTK+ avec C & C++
    Réponses: 5
    Dernier message: 09/10/2005, 14h55
  3. Réponses: 1
    Dernier message: 11/05/2005, 17h28
  4. Réponses: 2
    Dernier message: 16/12/2004, 15h33
  5. VB6] imprimer le texte afficher dans une picturebox
    Par Persons dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 27/08/2004, 11h15

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