Отображение текста в OpenGL под Windows с помощью MinGW - PullRequest
0 голосов
/ 20 июля 2011

Как я могу отображать текст в программе OpenGL? Я использую MinGW, но в учебных пособиях в Интернете используются библиотеки, специально предназначенные для разработки Windows (в качестве параметра принимается HDc).

Ответы [ 2 ]

1 голос
/ 20 июля 2011

Несмотря на то, что вы уже приняли ответ, я хочу указать вам:

http://www.angelcode.com/products/bmfont/

Я использую сгенерированные шрифты в моей библиотеке, и это действительно легко интегрировать ивам не нужно делать свое приложение зависимым от другой библиотеки.Он генерирует текстуру со шрифтом и файлом для анализа.Затем вы привязываете текстуру к opengl, прежде чем начертите какой-либо шрифт, и нарисуете квад (спрайт) для каждого глифа с координатами суб-текстуры этого глифа.Вы получаете их из сгенерированных файлов.

Смотрите мою реализацию здесь:

http://code.google.com/p/nightlight2d/source/browse/trunk/NightLightDLL/NLFont.cpp

Не стесняйтесь использовать его.Пусть источник будет с вами.

1 голос
/ 20 июля 2011

OpenGL не имеет встроенного рендеринга шрифтов. На большинстве платформ вы можете вызывать специфичные для платформы вызовы для отображения текста поверх вашего дисплея OpenGL (или вокруг него), что, вероятно, и делают эти учебные пособия. Если вы хотите, чтобы текст был частью вашей сцены OpenGL, вам нужно свернуть свою собственную.

Распространенным подходом является использование существующей библиотеки рендеринга шрифтов (скажем, freetype), рендеринг текста в растровое изображение и использование его в качестве текстуры.

Если вам нужно визуализировать много текста, вам лучше преобразовать отдельные глифы в текстуры; рендеринг одного глифа затем занимает один квад (и вы можете использовать обычные оптимизации, чтобы сделать его более быстрым).

Вместо шрифтов TTF / OTF вы, конечно, также можете просто использовать предварительно отображаемые растровые изображения; это устраняет необходимость в библиотеке рендеринга шрифтов во время выполнения, но не позволяет динамически изменять размер шрифта (хотя вы, конечно, можете рендерить растянутые экземпляры вашего текста).

Другой вариант: libcairo , кажется, имеет (экспериментальный) бэкэнд OpenGL, так что, возможно, стоит проверить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...