[译]GLUT教程 - 位图字体
Lighthouse3d.com >> GLUT Tutorial >> Fonts >> Bitmap Fonts
位图字体一般是二维字体.虽然我们会把它放到三维世界,但这些字体没有厚度,也不能渲染和测量,只能翻译.除此之外,字体会一直面向镜头,像一张广告牌一样.虽然这个可以看作是潜在的缺点,但另一方面看我们也不用考虑字体的方向问题.
本节我们会演示GLUT函数如何显示位图文本到屏幕.这里用到glutBitmapCharacter函数来写入字符.原型如下:
void glutBitmapCharacter(void *font, int character)
font - 显示字体的名称
character - 待渲染的字母,符号,数字等..
字体名的可选值如下:
GLUT_BITMAP_8_BY_13
GLUT_BITMAP_9_BY_15
GLUT_BITMAP_TIMES_ROMAN_10
GLUT_BITMAP_TIMES_ROMAN_24
GLUT_BITMAP_HELVETICA_10
GLUT_BITMAP_HELVETICA_12
GLUT_BITMAP_HELVETICA_18
有些字体名称很容易辨认,所以你应该能找到你要的,尽管如此,你会在下面的实例中的弹出菜单中尝试所有字体.
下面这行举例出如何调用glutBitmapCharacter函数来输出一个字符到栅格位置.
glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18,'3');
这里重点讨论真是的栅格位置是什么.栅格位置可以用OpenGL库中的glRasterPos函数族来设置.其中两个的原型如下:
void glRasterPos2f(float x, float y);
void glRasterPos3f(float x, float y, float z);
x,y,z - 用于显示文本的本地坐标
glutBitmapCharacter函数渲染字体到指定的位置并利用字宽来增强当前的栅格位置.因此,渲染一个字符串时,只需要接连调用glutBitmapCharacter函数就可以达到输出目的.下面函数渲染了一个字符串到指定的栅格位置起始:
void renderBitmapString( float x, float y, float z, void *font, char *string) { char *c; glRasterPos3f(x, y,z); for (c=string; *c != '\0'; c++) { glutBitmapCharacter(font, *c); } }