我有一个OpenGL
项目使用GLUT
(不是 freeglut),其中我想在视口上的固定位置显示 2D 文本。我的其余对象位于 3D 世界坐标中。
这个答案一个相关的老问题说,
GLUT 附带的位图字体是简单的 2D 字体,不适合在 3D 环境中显示。然而,它们非常适合需要覆盖在显示窗口上的文本。
我已经尝试了接受的答案中概述的方法,但它没有给我所需的输出。以下是显示功能的代码片段:
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glTranslatef(0.0, 0.0, -(dis+ddis)); //Translate the camera
glRotated(elev+delev, 1.0, 0.0, 0.0); //Rotate the camera
glRotated(azim+dazim, 0.0, 1.0, 0.0); //Rotate the camera
.
.
.
draw 3D scene
.
.
.
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
gluOrtho2D(0.0, win_width, 0.0, win_height);
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
glRasterPos2i(10, 10);
string s = "Some text";
void * font = GLUT_BITMAP_9_BY_15;
for (string::iterator i = s.begin(); i != s.end(); ++i)
{
char c = *i;
glColor3d(1.0, 0.0, 0.0);
glutBitmapCharacter(font, c);
}
glMatrixMode(GL_MODELVIEW);
glPopMatrix();
glMatrixMode(GL_PROJECTION);
glPopMatrix();
glFlush();
glSwapBuffers();
}
A 类似的问题我想要的似乎已经被问到,但作者没有接受的答案。
一般来说,答案似乎建议使用其他库(主要是特定于操作系统的)来实现覆盖。然而,没有明确的迹象表明这是否可以通过GLUT
独自的。能做到吗?