lunes, 24 de septiembre de 2007

Previo 6 (LABORATORIO)

1.- ¿Cómo se dibuja texto con GLUT?

-Se puede utilizar la función de GLUT: glutBitmapCharacter
glutBitmapCharacter renderiza un caracter usando OpenGL. Permite mostrar en la pantalla un caracter con algún tipo de fuente que se le asigne. · void glutBitmapCharacter(void *font, int character); font Tipo de Fuente para el caracter que se va a utilizar character Caracter a renderizar. Las Fuentes disponibles para glutBitmapCharacter son: GLUT_BITMAP_8_BY_13 -misc-fixed-medium-r-normal--13-120-75-75-C-80-iso8859-1 GLUT_BITMAP_9_BY_15 -misc-fixed-medium-r-normal--15-140-75-75-C-90-iso8859-1 GLUT_BITMAP_TIMES_ROMAN_10 -adobe-times-medium-r-normal--10-100-75-75-p-54-iso8859-1 GLUT_BITMAP_TIMES_ROMAN_24
GLUT_BITMAP_HELVETICA_10 -adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1 GLUT_BITMAP_HELVETICA_12 -adobe-helvetica-medium-r-normal--12-120-75-75-p-67-iso8859-1 GLUT_BITMAP_HELVETICA_18 -adobe-helvetica-medium-r-normal--18-180-75-75-p-98-iso8859-1 La representación de un caracter que no existe no tiene ningún efecto.


2.- ¿Cambia el dibujo de texto en FreeGLUT y OpenGLUT? ¿Por qué?

Si puede cambiar debido a que OpenGLUT hereda un número muy pequeño de fuentes estándar de FreeGLUT y GLUT. Algunas son "bitmapped" otras son del tipo "stroked". Algunas usan posicionamiento de ancho ajustado, otras no. Las fuentes tipo "stroked" son dibujadas en als coordeandas del modelo del espacio.

Las fuentes son:
GLUT_STROKE_ROMAN (ancho no ajustado)
GLUT_STROKE_MONO_ROMAN (ancho ajsutado)

3.- Cómo funcionan y cuántos son los parametros de los comandos:

glutBitmapCharacter();

void glutBitmapCharacter(void *font, int character)

font Tipo de Fuente para el caracter que se va a utilizar character Caracter a renderizar.
GLUT_BITMAP_8_BY_13 GLUT_BITMAP_9_BY_15 GLUT_BITMAP_TIMES_ROMAN_10 GLUT_BITMAP_TIMES_ROMAN_24 GLUT_BITMAP_HELVETICA_10 GLUT_BITMAP_HELVETICA_12GLUT_BITMAP_HELVETICA_18
void glutStrokeCharacter(void *font, int character);
font Fuente a usar
character Carácter a renderizar

Las Fuentes disponibles para esta función son las siguientes: GLUT_STROKE_ROMAN Roman Simple Espaciada Proporcionadamente. El máximo alto de los caracteres en esta fuente es de 119.05 unidades. GLUT_STROKE_MONO_ROMAN Roman Simple monoespaciada. El máximo alto de los caracteres en esta fuente es de 119.05 unidades. Cada caracter es de 104.76 unidades de ancho.

¿En que se diferencian?
Usando glutStrokeCharacter se pueden aplicar transformaciones a los caracteres


4.-Escriba un programa que dibuje su nombre y numero de cuenta en la pantalla.

Código:

//Declaracion de fuentes
void *font = GLUT_BITMAP_HELVETICA_18;
void *fonts[] =
{
GLUT_BITMAP_9_BY_15,
GLUT_BITMAP_TIMES_ROMAN_10,
GLUT_BITMAP_TIMES_ROMAN_24
};


void output(int x, int y, char *string) //funcion que despliega la cadena
{
int len, i;

glRasterPos2f(x, y);
len = (int) strlen(string);
for (i = 0; i <>
glutBitmapCharacter(font, string[i]);
}
}

void display(void) //desplegado de nombre y numero de cuenta
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.0, 0.0, 1.0);
//Aqui cambio el color de la fuente
output(250, 270, "Señora X.");
output(580, 270, "Aki sta el num de cuenta.");
glutSwapBuffers();
}

void
reshape(int w, int h)
{
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0, w, h, 0);
glMatrixMode(GL_MODELVIEW);
}

int
main(int argc, char **argv)
{
int i, msg_submenu, color_submenu;

glutInit(&argc, argv);
for (i = 1; i <>
if (!strcmp(argv[i], "-mono")) {
font = GLUT_BITMAP_9_BY_15;
}
}
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
glutInitWindowSize(800, 600);
glutInitWindowPosition (50, 100);
glutCreateWindow("Previo 6");
glClearColor(0.0, 0.0, 0.0, 1.0);
glutDisplayFunc(display);
glutReshapeFunc(reshape);

glutMainLoop();
return 0;
}

No hay comentarios: