Использование растровых шрифтов GLUT

Я пишу простое OpenGLприложение, которое использует GLUT. Я не хочу использовать свой собственный код для рендеринга шрифтов, вместо этого я хочу использовать простые растровые шрифты, которые поставляются вместе GLUT. Какие шаги, чтобы заставить их работать?

18.08.2008 08:18:27
1 ОТВЕТ
РЕШЕНИЕ

Простое отображение текста легко сделать в OpenGL с использованием растровых шрифтов GLUT. Это простые 2D-шрифты и не подходят для отображения в вашей 3D-среде. Тем не менее, они идеально подходят для текста, который нужно наложить на окно дисплея.

Вот примеры шагов для отображения любимой цитаты Эрика Картмана, выделенной зеленым цветом в окне GLUT:

Мы будем устанавливать положение растра в экранных координатах. Итак, настройте матрицы проекции и модели для 2D-рендеринга:

glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
gluOrtho2D(0.0, WIN_WIDTH, 0.0, WIN_HEIGHT);

glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();

Установите цвет шрифта. (Установите это сейчас, а не позже.)

glColor3f(0.0, 1.0, 0.0); // Green

Установите местоположение окна, где должен отображаться текст. Это делается путем установки положения растра в экранных координатах. Нижний левый угол окна (0, 0).

glRasterPos2i(10, 10);

Установите шрифт и отобразите строковые символы, используя glutBitmapCharacter .

string s = "Respect mah authoritah!";
void * font = GLUT_BITMAP_9_BY_15;
for (string::iterator i = s.begin(); i != s.end(); ++i)
{
    char c = *i;
    glutBitmapCharacter(font, c);
}

Восстановить обратно матрицы.

glMatrixMode(GL_MODELVIEW);
glPopMatrix();

glMatrixMode(GL_PROJECTION);
glPopMatrix();
28
18.08.2008 08:18:38
У меня есть несколько объектов в трехмерных мировых координатах, и мне нужно отобразить наложенный текст в фиксированной позиции в области просмотра. Я попробовал этот подход, но он не дает мне фиксированного наложения текста. Напротив, он дает мне текст, который вращается при движении камеры. Как вы получаете это на работу?
Papouh 17.09.2013 09:17:35
@ Папу: Это странно. Если вы заметили, что звонки, которые я использую, являются 2D, то есть для окна. Они не должны двигаться в 3D.
Ashwin Nanjappa 19.09.2013 07:41:58
@ Эшвин: я делал некоторые вещи неправильно, когда я писал предыдущий комментарий. Но главная проблема заключалась в том, что я использовал glOrtho2Dкак в вашем примере вместо glOrtho. Это решило проблему.
Papouh 19.09.2013 17:10:32
Иногда это может потребовать некоторой модификации для работы. Смотрите это сообщение: stackoverflow.com/a/21923064/1767377
SyntaxRules 21.02.2014 01:48:02