Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Fuentes Gráficas

Iniciado por pbarros, 05 de Mayo de 2006, 09:45:44 PM

« anterior - próximo »

pbarros

 Hola José Miguel,
te explico, en mi juego, quiero que algunos menús y mensajes estén hechos a base de fuentes Bitmap, ya que a las true type fonts no puedes agregarles texturas y distintos colores.
Tengo varios Bitmap Fonts, pero quería hacer una clase, para cada elemento del menu por ejemplo, cosa de escribir el mensaje y apareciera el objeto, con sus eventos propios. El problema es que no todas esas fuentes tienen el mismo tamaño (alto y/o ancho).
Pensé en cargar el Bitmap completo en un MAP, y cargar el cuadro correspondiente a la letra (como cuando cargas una animación cuadro a cuadro), pero si cambio el Bitmap, ya no me sirve esa implementación.
¿Me puedes hechar una manito con esto?

[EX3]

 Una de las cosas que no he llegado a terminar de implementar en la dx_lib32 fue un sistema de fuentes graficas para dx_GFX. Tengo un editor semi terminado en el que podias armar una fuente grafica o bien importando una fuente True Type o bien importando caracter a caracter un grafico (bmp, tga, png, jpg, etc...). Es mas, aqui esta la prueba de lo dicho: dx_lib32_fontedit_alpha.zip
Este editor genera (y esta version lo hace) un formato propio que dx_lib32 podria interpretar mediante una simple funcion similar a DRAW_Text() a la que simplemente se le pasarian los parametros de texto, tamaño, color y algun otro parametro de configuracion. Los calculos de seleccion y dibujo de cada caracter serian realizados por la propia libreria.

Lo unico que se me ocurre por el momento y como solucion a tu cuestion (por que no tengo decidido al 100% si voy o no a implementar fuentes graficas en dx_lib32) es que mires un tutorial sobre como implementar fuentes graficas en Direct3D:
http://directx4vb.vbgamer.com/DirectX4VB/T...GR_Lesson06.asp
Con ayuda de MAP_SetRegion() se podria hacer una implementacion similar.

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

tamat

 Creo que lo que buscas es esta aplicacion. Es un generador de bitmaps con la fuente que tu elijas. Le dices qué font, el tamaño del texto, el tamaño de la textura, e incluso varios parametros más como paddings, etc. El programa omite automaticamente aquellos caracteres que no se pueden mostrar, y además puedes elegir qué caracteres no quieres incluir en la textura (por si quieres ahorrar espacio).

Luego el programa te genera una textura y un archivo que contiene información sobre cada caracter, principalmente donde está mapeada cada letra dentro de la textura aunque agrega tambien temas de offset para situaciones de caracteres más elavorados. Este archivo lo puede guardar en texto plano o en XML (yo uso XML y me va muy bien). Además guarda información sobre offsets entre caracteres (kerning), a qué distancia está la linea base del texto, cosas así, info muy util cuando pintas texto si lo quieres hacer de manera limpia.

Sin duda una herramienta indispensable. Una de las ventajas es que no crea cuadrados iguales para cada letra sino que las ordena dentro de la textura por tamaños, para optimizar el espacio. En una textura de 266x512 puedes tener una ARIAL de tamaño bastante grande (creo que era 30).

A mi programar la clase que contenía la fuente no me llevó más que una tarde.
Por un stratos menos tenso

[EX3]

 Mi editor "incabado" tambien optimizaba el espacio de la textura final reorganizando los caracteres en casos en los que hubiese caracteres vacios (sin informacion alguna) o no estuviesen los 224 caracteres habiles, el problema es que trabajando con Direct3D es que estas atado a la potencia de 2 en cuanto a tamaños de texturas y eso a veces origina demasiado espacio vacio en la textura final en mi editor.

El unico inconveniente que le veria al editor que comentas Tamat (por que dificil sacarle uno :)) seria el del tamaño resultante de la textura, si fuese o no potencia de 2. Se puede configurar este resultado?

No se con Direct3D9 si ya se pueden dibujar directamente superficies en pantalla, con D3D8 no, por eso dx_lib32 solo puede dibujar texturas (o mapas como se denomina en la libreria) y no superficies.

Aunque estaba pensando que haciendo una pequeña utilidad se podria hacer una especie de conversor para generar un formato unico de archivo, informacion de los caracteres de la fuente + textura en 1 archivo, tal y como tenia pensado para mi editor. Voy a mirar esto ultimo que incluso todavia llego a implementar las fuentes graficas en mi lib :)

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

pbarros

 Gracias por las respuestas, aunque debo confesar que no entendí mucho :huh: . No soy un erudito en esto de los juegos, más bien estoy recién comenzando, como mucho entusiasmo y poco conocimiento.  :P  

pbarros

 No sé si me expliqué bien...
tengo las fuentes ya hechas en BMP, ej:



y quiero usarlas, no necesito un programa para crearlas... el problema es que tengo fuentes en distintos tamaños, y no podría hacer un algoritmo que me sirva para todas las fuentes, ya que son de distinto alto y ancho.

Por ejemplo, tengo esa que no tiene más de 15 pixeles de alto... pero hay otras que tienen más de 20 pixeles. Estuve tratando de idear una rutina para dibujar la fuente con Map_SetRegion, pero sólo logré hacer un par de garabatos en pantalla... la verdad, es que no supe que hacer.

:(  






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.