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 :

Texte et opengl : galere ?


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Texte et opengl : galere ?
    Bonjour,

    J'ai un nouveau problème. Je voudrais écrire du texte. Voici ma fonction pour le moment :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    void __fastcall TForm1::ecrire(float x, float y, char *string,float r, float v, float b)
    {
      int len, i;
                    glDisable(GL_TEXTURE_2D);
                    glColor3f(r,v,b);
    	        glRasterPos2f(x,y);
            	len=(int)strlen(string);
            	for(i=0;i<len;i++)
            	{
            	       	glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18,string[i]);
            	}
                    glEnable(GL_TEXTURE_2D);
    }
    Elle marche très bien mais je peux pas mettre de variable dans l'appel de ma fonction.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ecrire(-2.8,1.7,"Score :" + score, 255, 0 ,0);
    Une méthode pour mettre mon texte plus une variable de type int ?

    Alors j'ai essayé une autre technique qui n'utilise pas Glut trouvé sur le site de nehe :

    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    GLvoid BuildFont(GLvoid)	// Build Our Bitmap Font
    {
    	HFONT	font;		// Windows font ID
    	HFONT	oldfont;	// Used for good house keeping
     
    	base = glGenLists(96);	// Storage for 96 characters
     
    	font = CreateFont(	-24,		        	        	// Height of font
    						0,	        		// Width of font
    						0,			        // Angle of escapement
    						0,		        	// Orientation angle
    						FW_BOLD,        		// Font weight
    						FALSE,  			// Italic
    						FALSE,			        // Underline
    						FALSE,		        	// Strikeout
    						ANSI_CHARSET,   		// Character set identifier
    						OUT_TT_PRECIS,		        // Output precision
    						CLIP_DEFAULT_PRECIS,    	// Clipping precision
    						ANTIALIASED_QUALITY,	        // Output quality
    						FF_DONTCARE|DEFAULT_PITCH,      // Family and pitch
    						"Courier New");			// Font name
     
    	oldfont = (HFONT)SelectObject(hDC, font);       // Selects the font we want
    	wglUseFontBitmaps(hDC, 32, 96, base);           // Builds 96 characters starting at character 32
    	SelectObject(hDC, oldfont);			// Selects the font we want
    	DeleteObject(font);				// Delete the font
    }
     
    GLvoid KillFont(GLvoid)                 // Delete the font list
    {
    	glDeleteLists(base, 96);	// Delete all 96 characters
    }
     
    GLvoid glPrint(const char *fmt, ...)    // Custom GL "Print" routine
    {
    	char text[256];	                // Holds our string
    	va_list ap;	        	// Pointer to list of arguments
     
    	if (fmt == NULL)		// If there's no text
    		return;			// Do nothing
     
    	va_start(ap, fmt);		// Parses the string for variables
    	    vsprintf(text, fmt, ap);	// And converts symbols to actual numbers
    	va_end(ap);			// Results are stored in text
     
    	glPushAttrib(GL_LIST_BIT);	// Pushes the display list bits
    	glListBase(base - 32);		// Sets the base character to 32
    	glCallLists(strlen(text), GL_UNSIGNED_BYTE, text);	// Draws the display list text
    	glPopAttrib();						// Pops the display list bits
    }
    Mais elle ne marche pas. Et il y n'y a pas d'erreur a la compile. Et j'ai bien mis le build_font().

    Une idée de mon problème ?

  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
    Le probleme en lui meme n'est pas d'afficher des variables, mais plutot de les convertir en char*.

    Donc soit tu fais un :
    char buffer[128];
    sprintf(buffer, "score : %d", score);
    ecrire(-2.8,1.7, buffer, 255, 0 ,0);

    soit tu fais une fonction a la printf like, avec un nombre/type d'argument inconnue que tu récuperes avec une va_list (comme le montre l'exemple de nehe).

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 228
    Par défaut
    "bla"+"bla" ne fait pas "blabla"...

    Quand tu appelles ta fonction ecrire, il faut au préalable que ton char *string soit correct :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    char str[200];
     
    sprintf(str,"Score : %d",score);
     
    ecrire(-2.8,1.7,str, 255, 0 ,0);

    EDIT : je ne suis pas assez rapide...lol

  4. #4
    Invité
    Invité(e)
    Par défaut
    Merci cela marche niquelle !

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

Discussions similaires

  1. Affichage d'un texte avec OpenGL
    Par kripteks dans le forum OpenGL
    Réponses: 13
    Dernier message: 30/03/2013, 18h57
  2. Réponses: 3
    Dernier message: 11/07/2011, 17h51
  3. Afficher du texte avec OpenGL
    Par Happy dans le forum Contribuez
    Réponses: 0
    Dernier message: 27/09/2009, 00h29
  4. Texte & Font, OpenGL 3 (DrawPixels deprecated)
    Par Heptaeon dans le forum OpenGL
    Réponses: 2
    Dernier message: 01/11/2008, 08h27
  5. [VB.NET] comment écrire du texte avec opengl?
    Par ero_senin dans le forum OpenGL
    Réponses: 2
    Dernier message: 17/01/2005, 13h34

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