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

StackOverflow https://stackoverflow.com/questions/544079

  •  23-08-2019
  •  | 
  •  

Вопрос

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

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

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

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

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

Это было полезно?

Решение

Вы должны использовать 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 для получения дополнительных вариантов шрифта

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top