关于opengl:使用GLUT位图字体

关于opengl:使用GLUT位图字体

Using GLUT bitmap fonts

我正在编写一个使用GLUT的简单OpenGL应用程序。我不想滚动自己的字体渲染代码,而是想使用GLUT附带的简单位图字体。使它们工作的步骤是什么?


使用GLUT位图字体在OpenGL中很容易实现简单的文本显示。这些是简单的2D字体,不适合在3D环境中显示。但是,它们非常适合需要在显示窗口上覆盖的文本。

以下是在GLUT窗口上显示绿色的Eric Cartman最喜欢的报价的示例步骤:

我们将在屏幕坐标中设置栅格位置。因此,为2D渲染设置投影和Modelview矩阵:

1
2
3
4
5
6
7
8
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
gluOrtho2D(0.0, WIN_WIDTH, 0.0, WIN_HEIGHT);

glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();

设置字体颜色。 (现在设置,不要再设置。)

1
glColor3f(0.0, 1.0, 0.0); // Green

设置显示文本的窗口位置。这是通过在屏幕坐标中设置栅格位置来完成的。窗口的左下角是(0,0)。

1
glRasterPos2i(10, 10);

设置字体并使用glutBitmapCharacter显示字符串字符。

1
2
3
4
5
6
7
string s ="Respect mah authoritah!";
void * font = GLUT_BITMAP_9_BY_15;
for (string::iterator i = s.begin(); i != s.end(); ++i)
{
    char c = *i;
    glutBitmapCharacter(font, c);
}

恢复矩阵。

1
2
3
4
5
glMatrixMode(GL_MODELVIEW);
glPopMatrix();

glMatrixMode(GL_PROJECTION);
glPopMatrix();

推荐阅读