OpenGL: установить местоположение glPrint () относительно экрана - PullRequest
1 голос
/ 15 марта 2012

Я пытаюсь напечатать некоторую информацию об отладке (FPS, местоположение камеры и поворот и т. Д.) В левом нижнем углу экрана. Я настроил его так, чтобы он работал нормально, используя glTranslate() и glRasterPos2f(), но если я попытаюсь изменить размер окна, текст больше не будет идеально лежать в углу, и в зависимости от того, насколько я вытяну окно, это может появиться в середине экрана, или это может начать отрезаться. Есть ли способ использовать glPrint() для печати текста, скажем, 10px слева и 10px справа?

Вот код, который я использую:

GLvoid glPrint(const char *fmt, ...){                   // Custom GL "Print" Routine
    char        text[256];                              // Holds Our String
    va_list     ap;                                     // Pointer To List Of Arguments
    va_start(ap, fmt);                                  // Parses The String For Variables
        vsprintf(text, fmt, ap);                        // And Converts Symbols To Actual Numbers
    va_end(ap);                                         // Results Are Stored In Text

    glPushAttrib(GL_LIST_BIT);                          // Pushes The Display List Bits
    glListBase(base - 32);                              // Sets The Base Character to 32
    glCallLists(strlen(text), GL_UNSIGNED_BYTE, text);  // Draws The Display List Text
    glPopAttrib();                                      // Pops The Display List Bits
}

void GLOUT(float xLocation, float yLocation, float colorRed, float colorGreen, float colorBlue){
    glDisable(GL_TEXTURE_2D);
    glLoadIdentity();
    glTranslatef(0,0,-.002);
    glColor3f(colorRed,colorGreen,colorBlue);
    glRasterPos2f(xLocation/10000, yLocation/10000);
    glPopMatrix();
}

enter image description here

1 Ответ

2 голосов
/ 15 марта 2012

Хитрость в рендеринге HUD или других оверлеях заключается в том, чтобы переключиться на более удобную для них комбинацию области просмотра и проекции.

Вы не обязаны придерживаться одной конкретной проекции с OpenGL. Позвольте мне угадать: вы настраиваете область просмотра и проекцию в обработчике изменения размера окна, верно? Предложение: перенесите этот код в функцию рисования и (надеюсь) сделайте так, чтобы прозрение прозвучало так.

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