使用 GLUT 位图字体

发布于 2024-07-04 06:24:08 字数 129 浏览 4 评论 0原文

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

I'm writing a simple OpenGL application that uses GLUT. I don't want to roll my own font rendering code, instead I want to use the simple bitmap fonts that ship with GLUT. What are the steps to get them working?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

灰色世界里的红玫瑰 2024-07-11 06:24:08

在 OpenGL 中使用 GLUT 位图字体可以轻松实现简单的文本显示。 这些是简单的 2D 字体,适合在 3D 环境中显示。 然而,它们非常适合需要覆盖在显示窗口上的文本。

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

我们将在屏幕坐标中设置光栅位置。 因此,设置用​​于 2D 渲染的投影和模型视图矩阵:

glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
gluOrtho2D(0.0, WIN_WIDTH, 0.0, WIN_HEIGHT);

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

设置字体颜色。 (立即设置,而不是稍后设置。)

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

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

glRasterPos2i(10, 10);

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

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);
}

恢复矩阵。

glMatrixMode(GL_MODELVIEW);
glPopMatrix();

glMatrixMode(GL_PROJECTION);
glPopMatrix();

Simple text display is easy to do in OpenGL using GLUT bitmap fonts. These are simple 2D fonts and are not suitable for display inside your 3D environment. However, they're perfect for text that needs to be overlayed on the display window.

Here are the sample steps to display Eric Cartman's favorite quote colored in green on a GLUT window:

We'll be setting the raster position in screen coordinates. So, setup the projection and modelview matrices for 2D rendering:

glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
gluOrtho2D(0.0, WIN_WIDTH, 0.0, WIN_HEIGHT);

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

Set the font color. (Set this now, not later.)

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

Set the window location where the text should be displayed. This is done by setting the raster position in screen coordinates. Lower left corner of the window is (0, 0).

glRasterPos2i(10, 10);

Set the font and display the string characters using glutBitmapCharacter.

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);
}

Restore back the matrices.

glMatrixMode(GL_MODELVIEW);
glPopMatrix();

glMatrixMode(GL_PROJECTION);
glPopMatrix();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文