Estou prestes a pegar computação gráfica mais uma vez para um projeto universitário. Para um projeto anterior, usei uma biblioteca chamada FTGL que não me deixou muito satisfeito, pois parecia meio pesado (tentei muitas técnicas de renderização, a renderização de texto não era muito boa).
Minha pergunta é: existe uma biblioteca boa e eficiente para isso? Caso contrário, qual seria a maneira de implementar um texto rápido, mas bonito? Alguns usos pretendidos são:
- Rótulos flutuantes de objetos / caracteres
- Diálogos
- Menus
- HUD
EDIT: De preferência também pode carregar fontes
Respostas:
Uma estrutura popular é a GUI de Crazy Eddie .
Mas, embora isso seja atraente, não é incomum lançar o seu próprio (e talvez se arrepender, pois o escopo aumenta mais tarde;))
É normal ter seus glifos em bitmaps e desenhá-los usando o OpenGL.
Às vezes, você mostra texto transitório que pode aparecer apenas em alguns quadros. Basta usar GL_QUADS + glVertex será suficiente. Mas, para qualquer grande quantidade de texto ou longa duração de visibilidade, vale a pena colocar o GL_QUADS em um VBO - notei grandes melhorias de desempenho com isso.
É claro que existe a questão de gerar os glifos reais que você precisa. Existem programas como o bmfont que você pode usar para isso. Ou você pode precisar de uma renderização um pouco mais complicada, por exemplo, tipo livre sob demanda. Eu tenho usado bmfont com meu próprio renderizador muito feliz, é muito simples deduzir.
fonte
Existem várias maneiras - dependendo do que você deseja ... Como em qualquer outro lugar, não há algo como "a melhor solução". Qual plataforma é seu alvo? Qual idioma você está usando? O que é redimensionamento / rotação de texto - é necessário? Você precisa ser capaz de renderizar TrueTypeFonts? O que é Multilanguage / Unicode? Como você deseja armazenar seu texto (qual codificação etc.)?
Eu usei no passado também o FTGL, bem como o tipo de código puro (http://www.freetype.org/ O FTGL é baseado nisso), diferentes tipos de fontes de bitmap, fontes de contorno ... Agora, estou mais viciado em bitmap fontes, mas isso é apenas minha preferência pessoal. Como não quero mais lidar com diferentes charsets, codificação e coisas assim - o licenciamento para bitmapfonts também é mais fácil e barato do que para TrueTypeFonts. E é utilizável em todas as plataformas que podem carregar imagens. Eu uso simplesmente um quad no openGL e mapeio uma parte da minha textura nele. O outro lado é: A fonte será redimensionável apenas com um fator de cerca de +/- 50%. Se você pode conviver com isso, sugiro usar um bitmapfont.
Se você também precisar lidar com diferentes codificações / conjuntos de caracteres, deverá encontrar uma maneira de carregar e usar o TrueTypeFonts (como no freetype, usando outra biblioteca ou com sua própria implementação) ...
Veja também os tutoriais diferentes da nehes sobre este tópico:
http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=13 Fontes de bitmap
http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=14 Fontes de estrutura de tópicos
http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=15 Fontes de estrutura de tópicos mapeadas para textura
http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=17 Fonte de textura 2D
Boa sorte!
fonte
Se você quiser usar fontes de bitmap, não poderá errar muito com o Angelcode Bitmap Font Generator: http://www.angelcode.com/products/bmfont/
Ele converte uma fonte truetype em uma ou mais texturas (com glifos bem compactados) e gera um pequeno arquivo contendo os UVs e espaçamentos (acho que a saída XML é particularmente fácil de trabalhar, e a qualidade dos dados de espaçamento é geralmente muito bom, mesmo sem o verdadeiro kerning)
fonte
Estou usando as bibliotecas de Sean Barret para renderizar truetype-glyphs no OpenGL (stb_image, stb_truetype).
O projeto de reformulação / desvio está usando essas bibliotecas para criar uma interface de usuário ( IMUI )
fonte
Considere QML . É uma biblioteca de interface do usuário totalmente funcional com uma sintaxe fácil de usar. Seu conjunto de recursos é significativamente melhor que o CEGUI na minha experiência e possui melhor documentação, suporte e comunidade, pois seu principal objetivo são aplicativos de desktop e a capacidade de renderizar fora da tela é apenas uma espécie de bônus.
Prós:
Contras:
fonte