首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在3D世界中的显示器上固定位置绘制2D文本- OpenGL

在3D世界中的显示器上固定位置绘制2D文本- OpenGL
EN

Stack Overflow用户
提问于 2015-03-24 18:24:00
回答 1查看 2.3K关注 0票数 4

我正在用C++创建一个非常简单的OpenGL游戏,有一个3D模型在3D世界中移动。我必须在屏幕上放置一些2D文本:相机不断地跟随模型,我希望文本出现在相对于窗口的固定位置。

我尝试使用Nehe的教程,但在这种情况下,gluLookAt处于固定位置(从“高”往下看,向下看是世界),文本显然显示正确。

不幸的是,我没有成功地使用glRotatef/glTranslatef完成我想要做的事情。

有谁可以帮我?如何在摄像头移动时在固定位置显示文本?我已经在其他线程中寻找了解决方案,但没有人能找到合适的解决方案(特别是利用glut函数的解决方案,这很常见,在我的情况下似乎不起作用)。

我还假设我已经实现了构建/删除字体等的所有函数,如我遵循的Nehe教程中所述。

编辑:我附加了我刚刚写的代码。不幸的是,它不能工作,但我不明白为什么(实际上我也不明白光栅位置到底是如何工作的)。

代码语言:javascript
复制
...
//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();
EN

回答 1

Stack Overflow用户

发布于 2015-03-24 23:42:54

最简单的方法是使用glWindowPos()而不是glRasterPos()来设置当前光栅位置。glWindowPos()允许您以窗口坐标为单位指定位置,以像素为单位。

例如,将位置设置为(100,100),原点在左下角:

代码语言:javascript
复制
glWindowPos2i(100, 100);

当前的转换不会对此调用产生影响。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29230086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档