Как использовать glutBitmapString() в C++ для рисования текста на экране?

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

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

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

Я использую linux, и я знаю, что мне нужно создать объект шрифта, хотя я не уверен, как именно, и я могу предоставить его со строкой в качестве второго аргумента. Однако, как мне также указать положение x/y?

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

2 ответов


вы должны использовать 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");

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

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 Дополнительные параметры шрифта