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 :

afficher du texte


Sujet :

OpenGL

  1. #1
    Mau
    Mau est déconnecté
    Membre à l'essai
    Inscrit en
    Avril 2002
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 15
    Points : 19
    Points
    19
    Par défaut afficher du texte
    Salut,

    je voudrais ecrire une phrase en openGL, c'est chaud d'après ce que j'ai pu voir sur les sites...

    les bouts de codes que j'ai assemblé ne semblent pas vouloir fonctionner,
    si quelqu'un a la sol
    Merci d'av A+
    Mau 8)

  2. #2
    Invité
    Invité(e)
    Par défaut
    un site avec de tres bons tutorials sur openGL en general
    http://nehe.gamedev.net/

    la page ou ya l'affichage de texte (qui marche, j'ai deja testé ...)
    http://nehe.gamedev.net/opengl3.asp
    ce se base sur le principe des bitmaps fonts = on affiche des bitmaps pour les lettres

  3. #3
    Membre régulier
    Inscrit en
    Mars 2002
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 84
    Points : 89
    Points
    89
    Par défaut
    Si tu utilise glut, il y a une fonction toute faite :
    exemple: affichage de fps
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    glPushMatrix();
     
    	glLoadIdentity();	
     
    	glRasterPos3f(-0.4f,-0.4f,-1.);
        sprintf ( strfps, "%d fps\0", old_fps );
     
    	for (unsigned int i=0;i<strlen(strfps);i++) 
    	 glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18,*(strfps+i));
     
    	glPopMatrix();

  4. #4
    Membre chevronné
    Profil pro
    MOA
    Inscrit en
    Décembre 2002
    Messages
    1 070
    Détails du profil
    Informations personnelles :
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : MOA

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 070
    Points : 1 903
    Points
    1 903
    Par défaut
    c'est pourquoi faire ton sprintf ????

    je l'ai jms utilisé ma apparemment
    int sprintf(char *buffer, const char *format[, argument, ...]);
    je premier argument est le buffer, apres tu mets le code format, oki, ms pourquoi un %d. Tu veux afficher le code ascii ????

    et apres le derniers parametre je suis completement out, "old_fps" est fait pourquoi ???


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for (unsigned int i=0;i<strlen(strfps);i++) 
        glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18,*(strfps+i));
    sinon cela reste tout a fait comprehensible, tu as un char *, tu incremente l'adresse et tu utilises l'operateur d'indirection. Tu aurais pu utiliser une ecriture plus naturelle, strfps[i], pour eviter une erreur ...


    glutBitmapCharacter fonctionne un peu comme glutBitmap ou tu mets un tableau (ou plutot l'adresse d'un tableau d'hexadecimal)

    Ou définit on l'ecart entre les lettres, glRasterPos3f(-0.4f,-0.4f,-1.); te permet de te positioner ms en aucun cas, j'ai vu l'ecart entre les lettres ...


    Existe t'il aussi une bibio, class C++ pour ecrire les chiffrees ???

  5. #5
    Membre chevronné
    Profil pro
    MOA
    Inscrit en
    Décembre 2002
    Messages
    1 070
    Détails du profil
    Informations personnelles :
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : MOA

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 070
    Points : 1 903
    Points
    1 903
    Par défaut
    grhhh, j'ai cette erreur et je sais pas ce qu'il faut déclarer
    Error: main.cpp(68,44):Undefined symbol 'old_fps'

    sinon j'ai mis le include stdio.h pour le sprintf
    et déclaré strfps en char *strfps;

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2002
    Messages : 82
    Points : 49
    Points
    49
    Par défaut
    salut,

    le code de exxos n'a rien d'étrange, il sagit juste d'un fragment de programme ou tu ne vois pas la déclaration de strfps et old_fps.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    glPushMatrix(); 
     
       glLoadIdentity();    
     
       glRasterPos3f(-0.4f,-0.4f,-1.); 
        sprintf ( strfps, "%d fps\0", old_fps ); 
     
       for (unsigned int i=0;i<strlen(strfps);i++) 
        glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18,*(strfps+i)); 
     
       glPopMatrix();
    sprintf permet de formater une chaîne de caractère => %d indique que l'argument old_fps devra être considéré comme un décimal.

    bon pour t'éviter de te concentrer ou tu ne devrais pas voici le même exemple sans ce
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sprintf ( strfps, "%d fps\0", old_fps );
    qui a l'air de te déranger

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
       char strMsg[15] = {0};
       char strMsgArg[] = "messages";
     
       glPushMatrix();
         glLoadIdentity();
         glRasterPos3f(-0.4f,-0.4f,-1.);
         sprintf ( strMsg, "déjà %d %s", 5, strMsgArg);
     
         for (unsigned int i=0;i<strlen(strMsg);i++)
           glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18,*(strMsg+i));
     
       glPopMatrix();
    A bientôt,

  7. #7
    Membre chevronné
    Profil pro
    MOA
    Inscrit en
    Décembre 2002
    Messages
    1 070
    Détails du profil
    Informations personnelles :
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : MOA

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 070
    Points : 1 903
    Points
    1 903
    Par défaut
    la je suis impressionné je pensais pas que l'on pouvais ecrire sous opengl, ca fonctionne du tonnere

    j'ai tjrs pas compris, le strMsg, c'est quoi. Tu as créé un tableau de carartère et tu as initialisé le premier élément à 0.

    pourquoi, cela m'affiche dj dans : dj 5message

    je suis novice en opengl, pourquoi lorsque j'affiche avec glRasterPos2f(0.0f,0.0f); cela m'affiche pas tout en bas à gauche comme autres éléments.

    EDIT : pourtant j'ai mis les glPushMatrix(); et glpopmatrix()

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2002
    Messages : 82
    Points : 49
    Points
    49
    Par défaut
    re,

    strMsg est une chaînes de caractère avec de la place pour 15 caractères.
    Une chaîne de caractère ce termine tjrs par \0.

    En écrivant je met \0 à la première position pr l'initialiser correctement et éviter les crasses mémoires.

    Pour le dj, c pas grave c juste que les caractères avec accents ne sont pas gérés essaye deja.

    et pour

    pourquoi lorsque j'affiche avec glRasterPos2f(0.0f,0.0f); cela m'affiche pas tout en bas à gauche comme autres éléments.
    C tout à fait normale, ca doit écrire en haut à gauche c comme ca que ca marche.

    A bientôt,

  9. #9
    Membre chevronné
    Profil pro
    MOA
    Inscrit en
    Décembre 2002
    Messages
    1 070
    Détails du profil
    Informations personnelles :
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : MOA

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 070
    Points : 1 903
    Points
    1 903
    Par défaut
    je met \0 à la première position pr l'initialiser correctement et éviter les crasses mémoires.
    oui justement, ne faut il pas le mettre au dernier element, c'est a dire strMsg[14] = '\0';
    0 c'est la meme chose que '\0', je savais pas ...

    C tout à fait normale, ca doit écrire en haut à gauche c comme ca que ca marche.
    euhh est tu sur que chez moi ca affiche en faite en plein millieu de la fenetre

    EDIT : je pense que c'est pour que tu as mis de nb négatif sur ton premier post
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    glRasterPos3f(-0.4f,-0.4f,-1.);

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2002
    Messages : 82
    Points : 49
    Points
    49
    Par défaut
    re,

    précision ce n'est pas mon premier post

    et sorry pr mon erreur

    C tout à fait normale, ca doit écrire en haut à gauche c comme ca que ca marche.


    ++

  11. #11
    Membre chevronné
    Profil pro
    MOA
    Inscrit en
    Décembre 2002
    Messages
    1 070
    Détails du profil
    Informations personnelles :
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : MOA

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 070
    Points : 1 903
    Points
    1 903
    Par défaut
    premier post ds le topic de Mau

    je suppose que l'on peut pas indiquer l'espace entre les caractères sinon j'ai vu que l'on pouvait definir la largeur et heuteur de la police
    GLUT_BITMAP_8_BY_13
    A fixed width font with every character fitting in an 8 by 13 pixel rectangle
    et le time roman est dispo aussi comme police
    GLUT_BITMAP_TIMES_ROMAN_24
    A 24-point proportional spaced Times Roman font.
    source : http://pyopengl.sourceforge.net/documentation/manual/glutBitmapCharacter.3GLUT.html

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

Discussions similaires

  1. Changement de couleur quand j'affiche du texte...
    Par MaxPayne dans le forum OpenGL
    Réponses: 3
    Dernier message: 10/12/2004, 13h55
  2. Comment afficher du texte avec swing ?
    Par meda dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 27/10/2004, 14h35
  3. [TabControl] Afficher du texte en transparence
    Par Benjamin GAGNEUX dans le forum Composants VCL
    Réponses: 2
    Dernier message: 21/10/2004, 23h01
  4. Afficher du texte en couleur sous Borland C++ 4.02
    Par Cthulhu 22 dans le forum Autres éditeurs
    Réponses: 7
    Dernier message: 18/11/2003, 00h53
  5. Réponses: 2
    Dernier message: 10/06/2002, 11h03

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