2008-08-18 13 views
19

Estoy escribiendo una aplicación simple OpenGL que utiliza GLUT. No quiero rodar mi propio código de representación de fuente, en su lugar quiero utilizar las fuentes de mapa de bits simples que se incluyen con GLUT. ¿Cuáles son los pasos para que funcionen?Uso de fuentes de mapa de bits GLUT

Respuesta

27

La visualización de texto simple es fácil de hacer en OpenGL usando fuentes de mapa de bits GLUT. Estas son fuentes 2D simples y son no adecuadas para mostrar dentro de su entorno 3D. Sin embargo, son perfectos para texto que debe superponerse en la ventana de visualización.

Estos son los pasos de ejemplo para mostrar cita favorita de Eric Cartman coloreadas en verde en una ventana GLUT:

Vamos a ajustar la posición de la trama en coordenadas de pantalla. Por lo tanto, configure las matrices de proyección y modelview para la representación 2D:

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

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

Establezca el color de la fuente. (Establezca esto ahora, no más tarde.)

glColor3f(0.0, 1.0, 0.0); // Green 

Establezca la ubicación de la ventana donde debe mostrarse el texto. Esto se hace al establecer la posición del ráster en las coordenadas de la pantalla. La esquina inferior izquierda de la ventana es (0, 0).

glRasterPos2i(10, 10); 

establecer la fuente y mostrar los caracteres de la cadena utilizando 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); 
} 

restaurar de nuevo las matrices.

glMatrixMode(GL_MODELVIEW); 
glPopMatrix(); 

glMatrixMode(GL_PROJECTION); 
glPopMatrix(); 
+2

+1 para ver South Park –

+0

Tengo un par de objetos en coordenadas mundiales 3D y necesito mostrar el texto de plantilla en una posición fija en la ventana gráfica. Intenté este enfoque, pero no me da texto de superposición fijo. Por el contrario, me da texto que gira a medida que la cámara se mueve. ¿Cómo haces que esto funcione? – Papouh

+0

@Papouh: Eso es extraño. Si nota, las llamadas que estoy usando son 2D, por lo que para la ventana. No deberían moverse en 3D. –

Cuestiones relacionadas