Я собираюсь забрать компьютерную графику еще раз для университетского проекта. Для предыдущего проекта я использовал библиотеку под названием FTGL, которая не оставляла меня достаточно довольным, потому что она была довольно тяжелой (я пробовал много методов рендеринга, рендеринг текста не очень хорошо масштабировался).
У меня вопрос, есть ли хорошая и эффективная библиотека для этого? Если нет, то как бы реализовать быстрый, но красивый текст? Некоторые предполагаемые применения:
- Ярлыки плавающих объектов / символов
- Диалоги
- меню
- HUD
РЕДАКТИРОВАТЬ: предпочтительно он также может загружать шрифты
Ответы:
Популярный фреймворк - графический интерфейс Crazy Eddie .
Но в то время как это привлекательно, это не редкость, чтобы бросить свой собственный (и, возможно, сожалеть об этом, поскольку объем увеличивается позже;))
Это нормально, чтобы ваши глифы были на растровых изображениях, а затем рисовать растровые изображения с помощью OpenGL.
Иногда вы показываете временный текст, который может появиться только для нескольких кадров. Достаточно просто использовать GL_QUADS + glVertex. Но для любого большого количества текста или любой длительной видимости стоит поместить GL_QUADS в VBO - я заметил значительное улучшение производительности от этого.
Существует, конечно, вопрос о создании необходимых вам глифов. Есть программы, такие как bmfont, которые вы можете использовать для этого. Или вам может потребоваться более сложный рендеринг, например, freetype по запросу. Я довольно успешно использую bmfont с моим собственным рендерером, его очень просто вывести.
источник
Есть много способов - в зависимости от того, что вы хотите ... Как и везде, не существует чего-то вроде "лучшего решения". Какая платформа ваша цель? Какой язык вы используете? Как насчет изменения размера / поворота текста - это необходимо? Нужно ли иметь возможность рендерить TrueTypeFonts? А как насчет мультиязычности / юникода? Как вы хотите хранить свой текст (какая кодировка и т. Д.)?
В прошлом я использовал также FTGL, а также чистый freetype (http://www.freetype.org/ FTGL основан на этом), различные виды растровых шрифтов, контурные шрифты ... Теперь я в основном зависим от растровых изображений шрифты, но это только мое личное предпочтение. Потому что я больше не хочу иметь дело с различными кодировками, кодировкой и тому подобным - и лицензирование для растровых шрифтов также проще и дешевле, чем для TrueTypeFonts. И его можно использовать на любой платформе, которая может загружать изображения. Я использую просто четырехугольник в openGL и наношу на него часть моей текстуры. Другая сторона: шрифт будет иметь только чистый размер с коэффициентом +/- 50%. Если вы можете жить с этим, я бы предложил использовать растровый шрифт.
Если вам также приходится иметь дело с различными кодировками / кодировками, вы должны найти способ загрузить и использовать TrueTypeFonts (например, с freetype, с использованием другой библиотеки или с вашей собственной реализацией) ...
Также взгляните на различные учебники по этой теме:
http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=13 Растровые шрифты
http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=14 Контурные шрифты
http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=15 Контурные шрифты с текстурой
http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=17 Шрифт 2D-текстуры
Удачи!
источник
Если вы хотите использовать растровые шрифты, вы не ошибетесь с Генератором растровых шрифтов Angelcode: http://www.angelcode.com/products/bmfont/
Он преобразует шрифт истинного типа в одну или несколько текстур (с красиво упакованными глифами) и выводит небольшой файл, содержащий UV и интервалы (я считаю, что с выходом XML особенно легко работать, и качество данных о расстоянии обычно очень хорошо даже без настоящего кернинга)
источник
Я использую библиотеки Шона Баррета для рендеринга истинных глифов под OpenGL (stb_image, stb_truetype).
Сформулировать / Объезд-проект использует эти библиотеки для создания пользовательского интерфейса ( IMUI )
источник
Рассмотрим QML . Это полностью функциональная библиотека пользовательского интерфейса с простым в использовании синтаксисом. По моему опыту, его набор функций значительно лучше, чем CEGUI, и он имеет лучшую документацию, поддержку и сообщество, так как его основной целью являются приложения для настольных компьютеров, а возможность рендеринга за кадром является своего рода бонусом.
Плюсы:
Минусы:
источник