OpenGL печать текстовых переменных на экране меню - PullRequest
1 голос
/ 15 февраля 2012

Я делаю гоночную игру, и я хотел бы напечатать некоторую информацию, такую ​​как скорость, круг, привязки клавиш и т. Д. На экране моей сцены.Я хочу, чтобы они были плоскими на экране, а положение, скажем, зафиксировано перед камерой (как спидометры в реальных играх), а не внутри моей сцены - если это невозможно, я напечатаю их внутри своей сцены.

Знаете ли вы, какие функции я могу использовать (glutBitmapCharacter?) Я пробовал printw, но моя программа не компилируется.Что вы предлагаете?

Будет напечатано несколько сообщений из разных подпрограмм

Я уже пробовал это (на экране ничего не отображается)

glPushMatrix();
                 glRasterPos2f(100, 100);
                 glColor3f(0.0,0.5,0.1);
                sprintf(message,"\nLap(User):%d",lapsB);
                len = (int) strlen(message);
                for (int i = 0; i < len; i++) {
                    glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18, message[i]);
                }
                glPopMatrix();

Еще одна вещь, какМогу ли я создать меню - есть ли способ, который я могу использовать, пользователь должен будет выбрать между 3 записями, ввод, нажав 1 или 2 или 3 только на клавиатуре

Ответы [ 3 ]

0 голосов
/ 15 февраля 2012

Вы уверены, что успешно создаете основной контекст openGL 4.2 под Windows? (Требуется определенная работа для достижения этого) Наличие карты, поддерживающей openGL 4, не означает, что вы работаете с контекстом ядра openGL 4.

Кроме того, если вы работаете с базовым контекстом openGL 4.2, glutBitmap () не будет работать, поскольку он устарел вместе с glRasterPos ()

Обратитесь к тому же ответу, который я дал в комментариях к исходному сообщению, где Я связываю с очень хорошим ответом, уже приведенным о том, как отображать текст openGL.

0 голосов
/ 10 февраля 2013

на вашем экране ничего не отображается, потому что glutBitmapCharacter ожидает код ASCII отправляемого вами символа.вы отправляете значение int символа для цифр

, вместо этого вам нужно отправить значение ascii каждого символа в вашем буфере символов сообщение

Например, если вы хотитеотобразить '1', отправить 1 + 48, так как 48 является кодом для 0 glutBitmapCharacter (GLUT_BITMAP_HELVETICA_18, 1 + 48)

0 голосов
/ 15 февраля 2012

У меня такое ощущение, что вы передаете слишком большие значения для glRasterPos2f (100, 100); Вот хороший пост, где вы можете увидеть, как отображать текст, используя GLUT , печатая текст с помощью glut .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...