gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 04:29:01 24 4
gpt4 key购买 nike

我正在尝试在屏幕左下角打印一些调试信息(FPS、相机位置和旋转等)。我已经对其进行了设置,以便使用 glTranslate()glRasterPos2f() 可以正常工作,但是如果我尝试调整窗口大小,文本将不再完美地停留在角,取决于我将窗口拉长多少,它可能会出现在屏幕中间,也可能会开始被切断。有没有什么方法可以使用 glPrint() 来打印文本,左边 10px,右边 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();
}

enter image description here

最佳答案

渲染 HUD 或其他覆盖物的技巧是为它们切换到更方便的视口(viewport)和投影组合。

您不会被迫使用 OpenGL 坚持一种特定的投影。让我猜猜:您在窗口的调整大小处理程序中设置了视口(viewport)和投影,对吗?建议:将该代码移至绘图函数,并(希望)这样做会顿悟。

关于c++ - OpenGL:设置 glPrint() 相对于屏幕的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9713367/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com