【问题标题】:OpenGL: set glPrint() location relative to screenOpenGL:设置 glPrint() 相对于屏幕的位置
【发布时间】:2012-03-15 02:54:53
【问题描述】:

我正在尝试在屏幕左下方打印一些调试信息(FPS、相机位置和旋转等)。我已经对其进行了设置,以便使用glTranslate()glRasterPos2f() 可以正常工作,但是如果我尝试调整窗口大小,则文本不再完美地停留在角落里,这取决于我将窗口伸展多少,它可能出现在屏幕中间,也可能开始被截断。有什么方法可以使用glPrint() 打印文本,例如,从左侧 10 像素,从右侧 10 像素?

这是我正在使用的代码:

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();
}

【问题讨论】:

    标签: c++ opengl text


    【解决方案1】:

    渲染 HUD 或其他叠加层的技巧是为它们切换到更方便的视口和投影组合。

    您不必使用 OpenGL 坚持一个特定的投影。让我猜猜:您在窗口的大小调整处理程序中设置视口和投影,对吧?建议:将该代码移到绘图函数中,并且(希望)有一个顿悟。

    【讨论】:

      猜你喜欢
      • 2022-11-20
      • 2014-10-06
      • 1970-01-01
      • 1970-01-01
      • 2020-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-27
      相关资源
      最近更新 更多