Отображение не движущегося текста не в 3D (например, отображение HUD или частоты кадров) - PullRequest
0 голосов
/ 16 июня 2011

Я хочу сделать что-нибудь для отображения текста на экране.Но я хочу что-то вроде FPS displayer - где бы вы ни находились, текст находится в одном месте (например, в углу) и имеет одинаковую высоту.Что-то вроде рисования HUD.

Я бы хотел увидеть код.

1 Ответ

3 голосов
/ 16 июня 2011

Такого рода вещи обычно делаются так:

void render_frame()
{   
    glViewport(0, 0, win_width, win_height);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    set_perspective_projection(); // glFrustum, gluPerspective, etc.
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
    render_scene();

    glViewport(0, 0, lower_left_HUD_width, lower_left_HUD_height);
    glEnable(GL_SCISSOR_TEST);
    glScissor(0, 0, lower_left_HUD_width, lower_left_HUD_height);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(0, 1, 0, 1, -1, 1);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    glClear(GL_DEPTH_BUFFER_BIT);
    render_lower_left_HUD();

    glViewport(win_width - upper_right_HUD_width, win_height - upper_right_HUD_height, upper_right_HUD_width, upper_right_HUD_height);
    glEnable(GL_SCISSOR_TEST);
    glScissor(win_width - upper_right_HUD_width, win_height - upper_right_HUD_height, upper_right_HUD_width, upper_right_HUD_height);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(0, 1, 0, 1, -1, 1);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    glClear(GL_DEPTH_BUFFER_BIT);
    render_upper_right_HUD();

    SwapBuffers();
}

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

...