Iniciar sesión

Ver la versión completa : [Programacion] Texto en OpenGL



Karkayu
30/06/2007, 12:31
Hola a tod@s:

Estoy haciendo un programilla en OpenGL/Glut para mostrar graficas de datos en un espacio 3D (una cosa muy simple; tan solo lineas y puntos).
El problema que tengo es a la hora de mostrar texto (tanto para poner las medidas en los ejes como para indicar los valores en cada punto de la grafica).

yo uso:



glRasterPos3f(x, y, z);
for (i=0; *(cadena+i); i++)
glutBitmapCharacter(font, *(cadena+i));

Pero claro, asi tenemos el siguiente problema: El tamaño de las letras en escena es fijo. Si hacemos Zoom sobre la escena el tamaño no varia y queda todo muy mal :mad:

FOTO 1 (http://i162.photobucket.com/albums/t258/dreamkarkayu/PFC/m1.png)
FOTO 2 (http://i162.photobucket.com/albums/t258/dreamkarkayu/PFC/m-zoom.png)

He encontrado algunas librerias que ayudan ha renderizar texto (fuentes TrueType) y a colocarle efectos y chorraditas (a mi eso me sobra). El problema es que esas librerias estan en C++ y orientadas a objetos. Yo tengo que hacerlo por coj0nes en C (a la vieja usanza).

¿Algun maginifico programador de este foro puede iluminarme con su infinita sabiduria? :D :D

Por supuesto todo bajo linux y (como ya he comentado) con C y OpenGL/Glut.

Un saludo
:brindis:

PD.- Imagino que el mensaje esta bien puesto aqui, no? Las secciones de programación que hay se refieren a otras consolas, no al PC. De todas formas, si alguien quiere moverlo, yo no tengo ningun problema. [wei5]

swapd0
30/06/2007, 13:05
Si usases windows podrias usar esto: http://www.naturewizard.com/tutorial0105.html
Tal vez podrias crear una textura con cada letra y dibujar un GL_QUAD para cada una... el problema es que si rotas la escena el texto tambien rotara

Karkayu
30/06/2007, 23:21
Si usases windows podrias usar esto: http://www.naturewizard.com/tutorial0105.html
Tal vez podrias crear una textura con cada letra y dibujar un GL_QUAD para cada una... el problema es que si rotas la escena el texto tambien rotara


Gracias por la respuesta. Mirare lo que me has pasado.
Hago un poquito de :arriba: porque estoy atascado con esto :confused:

Un saludo
:brindis:

efegea
30/06/2007, 23:25
Yo ahora mismo no lo recuerdo bien, hablo de memoria:

Yo uso GL_QUADS para cada letra, así de simple. Con una textura que contiene todo el abecedario y resto de caracteres.

Por supuesto en modo ortho

No veo porqué tendría que rotar el texto si se rota la escena :confused:

Karkayu
01/07/2007, 01:03
Yo ahora mismo no lo recuerdo bien, hablo de memoria:

Yo uso GL_QUADS para cada letra, así de simple. Con una textura que contiene todo el abecedario y resto de caracteres.

Por supuesto en modo ortho

No veo porqué tendría que rotar el texto si se rota la escena :confused:

Esa posibilidad ya la habia pensado yo. Lo que pasa es que es un poco coñazo el calcular la posicion correcta dentro de la escena de cada QUAD para poner el texto. Mas que nada porque cada punto de la grafica llevara sus datos (una par de strigs).

Lo suyo seria usar alguna libreria ya preparada (tipo SDL) de forma que pueda colocar el texto usando alguna funcion y los parametros correspondientes (no me importa como este implementada).

En la pagina de Nehe he visto una tecnica llamada BillBoard, peerrooo tambien es mucho follon para las 4 cosas que quiero hacer :D

Al final tendre que usar los GL_QUADS que comentas o programarme mi propia libreria para renderizar texto :mad:

En buena hora se me ocurrio soltar lo de: "Este programa se hace en una semanita. Si son 4 lineas y puntos mal puestos" Quien me mandaria a mi abrir la bocaza :D :D :D


Un saludo y gracias por tu respuesta
:brindis:

efegea
01/07/2007, 05:40
¿Billboard? Ah quieres que el texto forme parte de la escena, se un objeto más, ¿no?

Yo pensaba que querías hacer lo de toda la vida, un texto pegado a la pantalla, con coordenadas 2Dno se si me explico. Si has visto mi video de mi engine, me refiero a el texto de "cheryl, where is cheryl?" y los fps. Un billboard sería texto, 2D, pero dentro de la escena, con sus coordenadas 3D, pero que siempre está mirando a la pantalla, siempre se ve de frente.

No se si me explico bien.

¿Cual de los dos casos quieres hacer? De todos modos tendrías que usar quads de la forma que dije en mi anterior post. No conozco otra forma de hacer texto 2D.

Karkayu
01/07/2007, 11:28
Un billboard sería texto, 2D, pero dentro de la escena, con sus coordenadas 3D, pero que siempre está mirando a la pantalla, siempre se ve de frente.


Eso. El texto deberia estar mirando siempre hacia la pantalla pero dentro de la escena. De ese modo al hacer Zoom de la escena su tamaño debe variar.

Un saludo
:brindis: