我正在用C ++创建一个非常简单的OpenGL游戏,3D模型在3D世界中移动。我必须在屏幕上放置一些2D文本:相机不断跟随模型,我希望文本显示在相对于窗口的固定位置。
我尝试使用Nehe的教程,但在这种情况下,gluLookAt处于固定位置(从"高"向下看世界),文字显然正确显示。
不幸的是,我没有成功用glRotatef / glTranslatef做我想做的事。
任何人都可以帮助我吗?如何在相机移动时在固定位置显示文字? 我已经在其他线程中寻找解决方案,但在任何人中我找不到合适的解决方案(特别是利用过剩功能的解决方案,这种解决方案很常见,在我的情况下似乎不起作用)。
我还假设我已经实现了构建/杀死字体等所有函数,如我所遵循的Nehe教程中所述。
编辑: 我附上我刚写的代码。不幸的是它不起作用,但我不明白为什么(实际上我不明白栅格位置究竟是如何工作的)。
...
//Here I draw the rest of the scene
....
//now I try to display the text
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
gluOrtho2D(0.0, width, 0.0, height);
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
glRasterPos2i(100, 100);
glPrint("SAMPLE TEXT");
glPopMatrix();
glMatrixMode(GL_PROJECTION);
glPopMatrix();
答案 0 :(得分:1)
最简单的方法是使用glWindowPos()
代替glRasterPos()
来设置当前的栅格位置。 glWindowPos()
允许您指定窗口坐标中的位置,以像素为单位。
例如,要将位置设置为(100,100),原点位于左下角:
glWindowPos2i(100, 100);
当前的转换对此次通话没有影响。