不在3D中显示不移动的文本(例如,显示HUD或帧速率)

| 我想做些什么在屏幕上显示文本。但是我想要类似FPS的显示器-无论您身在何处,文本都在同一位置(例如,在角落)且高度相同。就像绘制HUD一样。 我想看代码。     
已邀请:
        通常以这种方式完成这种事情:
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或类似视图。     

要回复问题请先登录注册