2008-08-18 20 views
19

J'écris une application simple OpenGL qui utilise GLUT. Je ne veux pas lancer mon propre code de rendu de police, mais plutôt utiliser les polices bitmap simples fournies avec GLUT. Quelles sont les étapes pour les faire fonctionner?Utilisation des polices bitmap GLUT

Répondre

27

L'affichage de texte simple est facile à faire dans OpenGL en utilisant les polices de caractères bitmap GLUT. Ce sont des polices 2D simples et sont pas approprié pour l'affichage à l'intérieur votre environnement 3D. Cependant, ils sont parfaits pour le texte qui doit être superposé sur la fenêtre d'affichage.

Voici les étapes de l'échantillon à afficher citation préférée de Eric Cartman couleur en vert sur une fenêtre de GLUT:

Nous allons régler la position de trame en coordonnées d'écran. Configurez donc les matrices de projection et de modèle pour le rendu 2D:

glMatrixMode(GL_PROJECTION); 
glPushMatrix(); 
glLoadIdentity(); 
gluOrtho2D(0.0, WIN_WIDTH, 0.0, WIN_HEIGHT); 

glMatrixMode(GL_MODELVIEW); 
glPushMatrix(); 
glLoadIdentity(); 

Définissez la couleur de la police. (Définissez-le maintenant, et non plus tard.)

Définissez l'emplacement de la fenêtre où le texte doit être affiché. Ceci est fait en réglant la position de la trame dans les coordonnées de l'écran. Le coin inférieur gauche de la fenêtre est (0, 0).

glRasterPos2i(10, 10); 

Définir la police et afficher les caractères de la chaîne à l'aide glutBitmapCharacter.

string s = "Respect mah authoritah!"; 
void * font = GLUT_BITMAP_9_BY_15; 
for (string::iterator i = s.begin(); i != s.end(); ++i) 
{ 
    char c = *i; 
    glutBitmapCharacter(font, c); 
} 

Restaurer les matrices.

glMatrixMode(GL_MODELVIEW); 
glPopMatrix(); 

glMatrixMode(GL_PROJECTION); 
glPopMatrix(); 
+2

+1 pour regarder South Park –

+0

J'ai quelques objets en coordonnées du monde 3D et je dois afficher du texte superposition à une position fixe sur la fenêtre. J'ai essayé cette approche, mais elle ne me donne pas de texte de superposition fixe. Au contraire, il me donne un texte qui tourne au fur et à mesure que la caméra bouge. Comment obtenez-vous cela au travail? – Papouh

+0

@Papouh: C'est étrange. Si vous remarquez, les appels que j'utilise sont 2D, donc pour la fenêtre. Ils ne devraient pas se déplacer en 3D. –