C++ OpenGL:设置glPrint()相对于屏幕的位置

C++ OpenGL:设置glPrint()相对于屏幕的位置,c++,opengl,text,C++,Opengl,Text,我试图在屏幕左下角打印一些调试信息(FPS、相机位置和旋转等)。我已经设置好了,使用 GLTROSTATE()/和 GrRasPoS2ff()>代码>,但是如果我尝试调整窗口大小,文本将不再在角落中完美地休息,并且取决于我伸展窗口的多少,它可能出现在屏幕的中间,或者可能开始被切断。是否有任何方法可以使用glPrint()打印文本,例如,从左到右打印10px 以下是我正在使用的代码: GLvoid glPrint(const char *fmt, ...){ /

我试图在屏幕左下角打印一些调试信息(FPS、相机位置和旋转等)。我已经设置好了,使用<代码> GLTROSTATE()/<代码>和 GrRasPoS2ff()>代码>,但是如果我尝试调整窗口大小,文本将不再在角落中完美地休息,并且取决于我伸展窗口的多少,它可能出现在屏幕的中间,或者可能开始被切断。是否有任何方法可以使用
glPrint()
打印文本,例如,从左到右打印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();
}

渲染HUD或其他叠加内容的诀窍是切换到视口和投影的更方便组合

使用OpenGL,您不必拘泥于某个特定的投影。让我猜猜:您在窗口的调整大小处理程序中设置了视口和投影,对吗?建议:将代码移到绘图功能,并(希望)有一个顿悟