как использовать glutStrokeCharacter независимо от состояния мира - PullRequest
0 голосов
/ 30 марта 2012

Я пытаюсь напечатать текст на моем экране, используя GLUT со следующим кодом:

glPushMatrix();
        glTranslatef(2, 2, 0);
        glScalef(0.2, 0.2, 0.2);
        for (char *p = m_strFpsMessage; *p; p++)
            glutStrokeCharacter(GLUT_STROKE_ROMAN, *p);

glPopMatrix();

В приведенном выше коде я пытаюсь напечатать некоторую информацию о моем статусе FPS, проблема в том, что текст печатается в 3D мире, а не в 2D. Я хотел бы сохранить текст в постоянном месте, независимо от положения моей камеры и ее вектора.

что я тут не так делаю?

edit: я пытался запустить следующий код, но результаты были в 3D

    glMatrixMode( GL_PROJECTION );
    glLoadIdentity();
    glPushMatrix();
        glOrtho(constVal[0][0], constVal[1][0], constVal[0][1], constVal[1][0], 0.0001,10000);
        glMatrixMode( GL_MODELVIEW );
        glLoadIdentity();
        glPushMatrix();
            glTranslatef(2, 2, 0);
            glScalef(0.2, 0.2, 0.2);
            for (char *p = m_strFpsMessage; *p; p++)
                glutStrokeCharacter(GLUT_STROKE_ROMAN, *p);

        glPopMatrix();

    glPopMatrix();
    glMatrixMode( GL_PROJECTION );
}

1 Ответ

3 голосов
/ 30 марта 2012

Просто измените проекцию и вид модели в соответствии с вашими потребностями, когда вам это нужно.Вполне допустимо запускать абсолютно новые матрицы в любое время.Вы знаете: glLoadIdentity и остальные.


Обновление: псевдокод:

display_scene:
    glViewport(...)
    glMatrixMode(GL_PROJECTION)
    setup_projection()
    glMatrixMode(GL_MODELVIEW)
    setup_modelview()
    draw_scene()

    glMatrixMode(GL_PROJECTION)
    setup_hud_projection()
    glMatrixMode(GL_MODELVIEW)
    setup_hud_modelview()
    draw_hud()

Pro-Совет: все операции OpenGL выполняются в функции отображения и не настраивать проекцию и область просмотра в обработчике изменения размера окна .Когда вы воспринимаете настройку проекции как обычную операцию и ничего особенного, многие, казалось бы, сложные проблемы исчезают.

...