Estoy a punto de recoger gráficos por computadora una vez más para un proyecto universitario. Para un proyecto anterior, utilicé una biblioteca llamada FTGL que no me dejó bastante satisfecho, ya que se sentía bastante pesado (probé muchas técnicas de renderizado, el renderizado de texto no escalaba muy bien).
Mi pregunta es, ¿hay una biblioteca buena y eficiente para esto? Si no, ¿cuál sería la forma de implementar un texto rápido pero atractivo? Algunos usos previstos son:
- Etiquetas de objeto / personaje flotante
- Diálogos
- Los menús
- HUD
EDITAR: Preferiblemente también podría cargar fuentes
Respuestas:
Un marco popular es la GUI de Crazy Eddie .
Pero si bien eso es atractivo, no es inusual rodar el tuyo (y tal vez lamentarte a medida que el alcance aumenta más adelante).
Es normal tener sus glifos en mapas de bits y luego dibujarlos utilizando OpenGL.
A veces, muestra texto transitorio que solo puede aparecer para un puñado de cuadros. Solo usando GL_QUADS + glVertex será suficiente. Pero para cualquier gran cantidad de texto o cualquier visibilidad de larga duración, vale la pena poner el GL_QUADS en un VBO: he notado grandes mejoras en el rendimiento de esto.
Por supuesto, está la cuestión de generar los glifos reales que necesita. Hay programas como bmfont que puedes usar para eso. O puede que necesite una representación bastante más complicada, por ejemplo, tipo libre bajo demanda. He estado usando bmfont con mi propio procesador bastante felizmente, es muy fácil de deducir.
fuente
Hay muchas maneras, dependiendo de lo que quieras ... Como en todos los demás, no hay algo como "la mejor solución". ¿Qué plataforma es tu objetivo? ¿Qué idioma estás usando? ¿Qué es el cambio de tamaño / rotación del texto? ¿Es necesario? ¿Necesita poder renderizar TrueTypeFonts? ¿Qué hay de multilenguaje / Unicode? ¿Cómo desea almacenar su texto (qué codificación, etc.)?
En el pasado también utilicé FTGL, así como el tipo libre puro (http://www.freetype.org/ FTGL se basa en esto), diferentes tipos de fuentes de mapa de bits, fuentes de contorno ... Ahora soy mayormente adicto al mapa de bits fuentes, pero esa es solo mi preferencia personal. Porque ya no quiero tratar con diferentes charsets, codificaciones y cosas así, y la licencia para bitmapfonts también es más fácil y más barata que para TrueTypeFonts. Y es utilizable en todas las plataformas que pueden cargar imágenes. Simplemente uso un quad en openGL y mapeo una parte de mi textura en él. El otro lado es: la fuente solo será redimensionable en un factor de aproximadamente +/- 50%. Si puede vivir con eso, sugeriría usar una fuente de mapa de bits.
Si también tiene que lidiar con diferentes codificaciones / charsets, debe encontrar una manera de cargar y usar TrueTypeFonts (como con freetype, usando otra biblioteca o con su propia implementación) ...
También eche un vistazo a los diferentes tutoriales sobre este tema:
http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=13 Fuentes de mapa de bits
http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=14 Fuentes de esquema
http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=15 Fuentes de contorno mapeadas
http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=17 Fuente de textura 2D
¡Buena suerte!
fuente
Si desea utilizar fuentes de mapa de bits, no puede equivocarse con el generador de fuentes de mapa de bits Angelcode: http://www.angelcode.com/products/bmfont/
Convierte una fuente TrueType en una o más texturas (con glifos bien empaquetados) y genera un pequeño archivo que contiene los UV y los espacios (encuentro que la salida XML es particularmente fácil de trabajar, y la calidad de los datos de espaciado es generalmente muy bueno, incluso sin kerning verdadero)
fuente
Estoy usando las bibliotecas de Sean Barret para renderizar truetype-glyphs en OpenGL (stb_image, stb_truetype).
El proyecto Recast / Detour está utilizando estas bibliotecas para crear una interfaz de usuario ( IMUI )
fuente
Considerar QML . Es una biblioteca de interfaz de usuario completamente funcional con una sintaxis fácil de usar. Su conjunto de características es significativamente mejor que CEGUI en mi experiencia, y tiene una mejor documentación, soporte y comunidad ya que su objetivo principal son las aplicaciones de escritorio y la capacidad de renderizar fuera de la pantalla es una especie de bono.
Pros:
Contras:
fuente