19
TEXTO EN OPENGL INTEGRANTES: ACEVEDO DÍAZ ELOISA ALCALA CAMARGO RODRIGO RAMOS GALICIA JUAN CHRISTIAN ROLDÁN SERRATO KAREN LUCERO COMPUTACIÓN GRÁFICA

TEXTO EN OPENGL INTEGRANTES: ACEVEDO DÍAZ ELOISA ALCALA CAMARGO RODRIGO RAMOS GALICIA JUAN CHRISTIAN ROLDÁN SERRATO KAREN LUCERO COMPUTACIÓN GRÁFICA

Embed Size (px)

Citation preview

Page 1: TEXTO EN OPENGL INTEGRANTES: ACEVEDO DÍAZ ELOISA ALCALA CAMARGO RODRIGO RAMOS GALICIA JUAN CHRISTIAN ROLDÁN SERRATO KAREN LUCERO COMPUTACIÓN GRÁFICA

TEXTO EN OPENGL

INTEGRANTES:

ACEVEDO DÍAZ ELOISA

ALCALA CAMARGO RODRIGO

RAMOS GALICIA JUAN CHRISTIAN

ROLDÁN SERRATO KAREN LUCERO

COMPUTACIÓN GRÁFICA

Page 2: TEXTO EN OPENGL INTEGRANTES: ACEVEDO DÍAZ ELOISA ALCALA CAMARGO RODRIGO RAMOS GALICIA JUAN CHRISTIAN ROLDÁN SERRATO KAREN LUCERO COMPUTACIÓN GRÁFICA

INTRODUCCIONINTRODUCCION ¿Cómo se dibuja texto con GLUT?¿Cómo se dibuja texto con GLUT?

El manejo de fuentes de texto es una de las El manejo de fuentes de texto es una de las partes débiles de OpenGL. Su implementación partes débiles de OpenGL. Su implementación es complicada ya que la biblioteca GL sólo es complicada ya que la biblioteca GL sólo proporciona funciones muy primitivas para proporciona funciones muy primitivas para trazado de bitmaps que obligan a disponer de trazado de bitmaps que obligan a disponer de una librería propia de bitmaps para los una librería propia de bitmaps para los caracteres. caracteres.

Page 3: TEXTO EN OPENGL INTEGRANTES: ACEVEDO DÍAZ ELOISA ALCALA CAMARGO RODRIGO RAMOS GALICIA JUAN CHRISTIAN ROLDÁN SERRATO KAREN LUCERO COMPUTACIÓN GRÁFICA

DEFINICIÓN DE FUNCIONESDEFINICIÓN DE FUNCIONES

GLUT resuelve un poco el dilema de usar texto en GLUT resuelve un poco el dilema de usar texto en OpenGL. OpenGL.

glutBitmapCharacterglutBitmapCharacter

que traza un único carácter en la posiciçón que traza un único carácter en la posiciçón especificada por glRasterPosespecificada por glRasterPos

drawString() y drawStringBig() que facilitan el drawString() y drawStringBig() que facilitan el texto en OpenGL al trazar cadenas de texto en OpenGL al trazar cadenas de caracteres.caracteres.

Page 4: TEXTO EN OPENGL INTEGRANTES: ACEVEDO DÍAZ ELOISA ALCALA CAMARGO RODRIGO RAMOS GALICIA JUAN CHRISTIAN ROLDÁN SERRATO KAREN LUCERO COMPUTACIÓN GRÁFICA

más definicionesmás definiciones

Qué es una Bitmap font.?Qué es una Bitmap font.?

Una Bitmap Font, o fuente Bitmap es una Una Bitmap Font, o fuente Bitmap es una fuente como las del Word ( "Times New fuente como las del Word ( "Times New Roman", ... ), es decir, un juego de Roman", ... ), es decir, un juego de caracteres en que cada carácter solo es un caracteres en que cada carácter solo es un trazo de un color. Esto en cuanto a trazo de un color. Esto en cuanto a Windows.Windows.

Page 5: TEXTO EN OPENGL INTEGRANTES: ACEVEDO DÍAZ ELOISA ALCALA CAMARGO RODRIGO RAMOS GALICIA JUAN CHRISTIAN ROLDÁN SERRATO KAREN LUCERO COMPUTACIÓN GRÁFICA

SINTAXISSINTAXIS

void glRasterPos{234}{sifd}(TYPE x, TYPE y, TYPE z, void glRasterPos{234}{sifd}(TYPE x, TYPE y, TYPE z, TYPE w);TYPE w);

glutBitmapCharacter(*font vacío, carácter interno);glutBitmapCharacter(*font vacío, carácter interno); Traza un único carácter en la posición especificada.Traza un único carácter en la posición especificada.

Es decir,Es decir,

glutBitmapCharacter(GLUT_BITMAP_HELVETICA_1glutBitmapCharacter(GLUT_BITMAP_HELVETICA_10, s[i]); //tipo de letra y texto a mostrar0, s[i]); //tipo de letra y texto a mostrar

glutStrokeCharacter(*font vacío, carácter interno);glutStrokeCharacter(*font vacío, carácter interno); Rinde un carácter del movimiento que usa OpenGL.Rinde un carácter del movimiento que usa OpenGL.

Page 6: TEXTO EN OPENGL INTEGRANTES: ACEVEDO DÍAZ ELOISA ALCALA CAMARGO RODRIGO RAMOS GALICIA JUAN CHRISTIAN ROLDÁN SERRATO KAREN LUCERO COMPUTACIÓN GRÁFICA

Bitmap Fonts Bitmap Fonts

Una fuente de mapa de bits es básicamente Una fuente de mapa de bits es básicamente un tipo de letra en 2Dun tipo de letra en 2D

- No espesor No espesor - no se pueden rotarno se pueden rotar- Solo se trasladanSolo se trasladan

glutBitmapCharacter()glutBitmapCharacter()

Page 7: TEXTO EN OPENGL INTEGRANTES: ACEVEDO DÍAZ ELOISA ALCALA CAMARGO RODRIGO RAMOS GALICIA JUAN CHRISTIAN ROLDÁN SERRATO KAREN LUCERO COMPUTACIÓN GRÁFICA

La sintaxis es la siguiente:La sintaxis es la siguiente:

void glutBitmapCharacter(void *font, void glutBitmapCharacter(void *font, int character)int character)

Parameters:Parameters: font - el nombre de la fuente a utilizar font - el nombre de la fuente a utilizar character - una letra, símbolo, el character - una letra, símbolo, el

número, etc número, etc

Page 8: TEXTO EN OPENGL INTEGRANTES: ACEVEDO DÍAZ ELOISA ALCALA CAMARGO RODRIGO RAMOS GALICIA JUAN CHRISTIAN ROLDÁN SERRATO KAREN LUCERO COMPUTACIÓN GRÁFICA

Llamada a la función Llamada a la función glutBitmapCharacterglutBitmapCharacter con salida a con salida a un único carácter en la posición actual:un único carácter en la posición actual:

glutBitmapCharacter(GLUT_HELVETICA_18,'3'); glutBitmapCharacter(GLUT_HELVETICA_18,'3'); La posición se puede establecer con la función La posición se puede establecer con la función

glRasterPosglRasterPos void glRasterPos2f(float x, float y);void glRasterPos2f(float x, float y);

void glRasterPos3f(float x, float y, float z); void void glRasterPos3f(float x, float y, float z); void

glRasterPos2f(float x, float yglRasterPos2f(float x, float y); );

Parámetros: Parámetros: x, y, z - coordenadas locales para que aparezca el textox, y, z - coordenadas locales para que aparezca el texto

Page 9: TEXTO EN OPENGL INTEGRANTES: ACEVEDO DÍAZ ELOISA ALCALA CAMARGO RODRIGO RAMOS GALICIA JUAN CHRISTIAN ROLDÁN SERRATO KAREN LUCERO COMPUTACIÓN GRÁFICA

La siguiente función hace una cadena a partir de la La siguiente función hace una cadena a partir de la posición especificada de tramaposición especificada de trama

void renderBitmapString( float x, float y, float z, void renderBitmapString( float x, float y, float z, void *font, char *string) { void *font, char *string) {

char *c; char *c;

glRasterPos3f(x, y,z);glRasterPos3f(x, y,z);

for (c=string; *c != '\0'; c++) {for (c=string; *c != '\0'; c++) {

glutBitmapCharacter(font, *c);glutBitmapCharacter(font, *c);

}}

}}

Page 10: TEXTO EN OPENGL INTEGRANTES: ACEVEDO DÍAZ ELOISA ALCALA CAMARGO RODRIGO RAMOS GALICIA JUAN CHRISTIAN ROLDÁN SERRATO KAREN LUCERO COMPUTACIÓN GRÁFICA

Función que devuelve el ancho de un carácter.Función que devuelve el ancho de un carácter.

int glutBitmapWidth(void *font, int character); int glutBitmapWidth(void *font, int character);

Parametros: Parametros: font – una de las Fuentes predefinidas en GLUT font – una de las Fuentes predefinidas en GLUT character – el carácter del cual deseamos saber el character – el carácter del cual deseamos saber el

anchoancho

Page 11: TEXTO EN OPENGL INTEGRANTES: ACEVEDO DÍAZ ELOISA ALCALA CAMARGO RODRIGO RAMOS GALICIA JUAN CHRISTIAN ROLDÁN SERRATO KAREN LUCERO COMPUTACIÓN GRÁFICA

Las opciones disponibles para la fuente son:Las opciones disponibles para la fuente son:

GLUT_BITMAP_8_BY_13 GLUT_BITMAP_8_BY_13 GLUT_BITMAP_9_BY_15 GLUT_BITMAP_9_BY_15 GLUT_BITMAP_TIMES_ROMAN_10 GLUT_BITMAP_TIMES_ROMAN_10 GLUT_BITMAP_TIMES_ROMAN_24 GLUT_BITMAP_TIMES_ROMAN_24 GLUT_BITMAP_HELVETICA_10 GLUT_BITMAP_HELVETICA_10 GLUT_BITMAP_HELVETICA_12 GLUT_BITMAP_HELVETICA_12 GLUT_BITMAP_HELVETICA_18GLUT_BITMAP_HELVETICA_18

Page 12: TEXTO EN OPENGL INTEGRANTES: ACEVEDO DÍAZ ELOISA ALCALA CAMARGO RODRIGO RAMOS GALICIA JUAN CHRISTIAN ROLDÁN SERRATO KAREN LUCERO COMPUTACIÓN GRÁFICA

• Escribe una cadena con una cierta cantidad de Escribe una cadena con una cierta cantidad de píxeles entre cada carácterpíxeles entre cada carácter

void renderSpacedBitmapString(void renderSpacedBitmapString( float x, float float x, float y,y, int spacing, void *font,int spacing, void *font, char *string) { char *string) {

char *c; int x1=x; char *c; int x1=x;

for (c=string; *c != '\0'; c++) {for (c=string; *c != '\0'; c++) {

glRasterPos2f(x1,y); glRasterPos2f(x1,y);

glutBitmapCharacter(font, *c);glutBitmapCharacter(font, *c);

x1 = x1 + glutBitmapWidth(font,*c) + x1 = x1 + glutBitmapWidth(font,*c) + spacing; spacing;

}}

}}

Page 13: TEXTO EN OPENGL INTEGRANTES: ACEVEDO DÍAZ ELOISA ALCALA CAMARGO RODRIGO RAMOS GALICIA JUAN CHRISTIAN ROLDÁN SERRATO KAREN LUCERO COMPUTACIÓN GRÁFICA

void renderVerticalBitmapString(float x, float y, void renderVerticalBitmapString(float x, float y, intint

bitmapHeight, void *font,bitmapHeight, void *font, char *string)char *string){ char *c; { char *c;

int i; int i;

for (c=string,i=0; *c != '\0'; i++,c++) {for (c=string,i=0; *c != '\0'; i++,c++) {

glRasterPos2f(x, y+bitmapHeight*i)glRasterPos2f(x, y+bitmapHeight*i)

glutBitmapCharacter(font, *c); glutBitmapCharacter(font, *c);

} }

}}

Dibujar texto vertical

Page 14: TEXTO EN OPENGL INTEGRANTES: ACEVEDO DÍAZ ELOISA ALCALA CAMARGO RODRIGO RAMOS GALICIA JUAN CHRISTIAN ROLDÁN SERRATO KAREN LUCERO COMPUTACIÓN GRÁFICA

EJEMPLOSEJEMPLOS

Hay muchas formas de Hay muchas formas de hacer texto.hacer texto.

Repasando 2 maneras Repasando 2 maneras

1)Pixel por Pixel1)Pixel por Pixel

2) Con funciones 2) Con funciones definidaddefinidad

Page 15: TEXTO EN OPENGL INTEGRANTES: ACEVEDO DÍAZ ELOISA ALCALA CAMARGO RODRIGO RAMOS GALICIA JUAN CHRISTIAN ROLDÁN SERRATO KAREN LUCERO COMPUTACIÓN GRÁFICA

Pixel por PixelPixel por Pixel

GLubyte rasters[24] = GLubyte rasters[24] = {0xc0, 0x00, 0xc0, {0xc0, 0x00, 0xc0, 0x00, 0x00, x00, 0xff, 0x00, x00, 0xff, 0x00, 0xc0, 0x00, 0xc0, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00,0x00, 0xc0, 0x00,

0xff, 0xc0, 0xff, 0xff, 0xc0, 0xff, 0xc0…};0xc0…};

glBitmap (10, 12, 0.0, glBitmap (10, 12, 0.0, 0.0, 11.0, 0.0, rasters);0.0, 11.0, 0.0, rasters);

EJEMPLOS

Page 16: TEXTO EN OPENGL INTEGRANTES: ACEVEDO DÍAZ ELOISA ALCALA CAMARGO RODRIGO RAMOS GALICIA JUAN CHRISTIAN ROLDÁN SERRATO KAREN LUCERO COMPUTACIÓN GRÁFICA

Pixel por PixelPixel por Pixel

Page 17: TEXTO EN OPENGL INTEGRANTES: ACEVEDO DÍAZ ELOISA ALCALA CAMARGO RODRIGO RAMOS GALICIA JUAN CHRISTIAN ROLDÁN SERRATO KAREN LUCERO COMPUTACIÓN GRÁFICA

FUNCIONESFUNCIONES

LETREROS LETREROS

Page 18: TEXTO EN OPENGL INTEGRANTES: ACEVEDO DÍAZ ELOISA ALCALA CAMARGO RODRIGO RAMOS GALICIA JUAN CHRISTIAN ROLDÁN SERRATO KAREN LUCERO COMPUTACIÓN GRÁFICA

APLICACIONESAPLICACIONESFUNCIONESFUNCIONES

Matemática y Matemática y tabularestabulares

Page 19: TEXTO EN OPENGL INTEGRANTES: ACEVEDO DÍAZ ELOISA ALCALA CAMARGO RODRIGO RAMOS GALICIA JUAN CHRISTIAN ROLDÁN SERRATO KAREN LUCERO COMPUTACIÓN GRÁFICA

FUNCIONESFUNCIONES

GRAFICAS CON GRAFICAS CON DATOSDATOS