Использование растровых шрифтов GLUT - PullRequest
19 голосов
/ 18 августа 2008

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

1 Ответ

28 голосов
/ 18 августа 2008

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

Вот примеры шагов для отображения любимой цитаты Эрика Картмана, выделенной зеленым цветом в окне 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();
...