Как использовать glutBitmapString () в C ++ для рисования текста на экране? - PullRequest
9 голосов
/ 13 февраля 2009

Я пытаюсь нарисовать текст на экране, используя GLUT в 2d.

Я хочу использовать glutBitmapString (), может кто-нибудь показать мне простой пример того, что вы должны сделать, чтобы настроить и правильно использовать этот метод в C ++, чтобы я мог нарисовать произвольную строку в позиции (X, Y)?

glutBitmapString(void *font, const unsigned char *string); 

Я использую Linux, и я знаю, что мне нужно создать объект Font, хотя я не совсем уверен, как именно, и я могу предоставить ему строку в качестве второго аргумента. Тем не менее, как мне также указать положение х / у?

Быстрый пример этого мне очень поможет. Если вы можете показать мне от создания шрифта до вызова метода, который был бы наилучшим.

Ответы [ 2 ]

11 голосов
/ 13 февраля 2009

Вы должны использовать glRasterPos, чтобы установить положение растра перед вызовом glutBitmapString(). Обратите внимание, что каждый вызов glutBitmapString() продвигает позицию растра, поэтому несколько последовательных вызовов будут выводить строки одну за другой. Вы также можете установить цвет текста, используя glColor(). Список доступных шрифтов перечислены здесь .

// Draw blue text at screen coordinates (100, 120), where (0, 0) is the top-left of the
// screen in an 18-point Helvetica font
glRasterPos2i(100, 120);
glColor4f(0.0f, 0.0f, 1.0f, 1.0f);
glutBitmapString(GLUT_BITMAP_HELVETICA_18, "text to render");
0 голосов
/ 31 июля 2017

Добавление к ответу Адама,

glColor4f(0.0f, 0.0f, 1.0f, 1.0f);  //RGBA values of text color
glRasterPos2i(100, 120);            //Top left corner of text
const unsigned char* t = reinterpret_cast<const unsigned char *>("text to render");
// Since 2nd argument of glutBitmapString must be const unsigned char*
glutBitmapString(GLUT_BITMAP_HELVETICA_18,t);

Проверьте https://www.opengl.org/resources/libraries/glut/spec3/node76.html, чтобы узнать больше вариантов шрифта

...