计算机图形学(二)输出图元_16_字符函数
来源:程序员人生 发布时间:2016-06-07 08:34:27 阅读次数:3286次
OpenGL 字符函数
OpenGL基本库仅为显示单个字符和文字串提供了基本的支持。我们可以定义图3.61中的位图字符,并将1个位图集作为字库存储。1个文字串通过将从字库当选择的位图序列映照到帧缓存的
相邻位置来显示。
但是,OpenGL实用函数工具包(GLUT)中有1些预定义的字库。因此我们不用创建自己的位图字型库,除非需要显示GLUT中没有的字体。GLUT子程序可显示位图和轮廓字体。GLUT位图字体由OpenGL的glBitmap函数来绘制,而轮廓字体由折线边界(GL_LINE_STRIP)生成。
使用下面的函数可显示GLUT位图字符:
glutBitmapCharacter (font, character);
这里参数font用GLUT符号常量赋值,用来指定1特定字型集,参数character赋以ASCII编码或其他要显示的字符。这样,要显示大写的"A",可使用ASCII编码65或指定为‘A’。一样,编码66与‘B’等效,编码97与小写字符‘a’等效,编码98与‘b’等效,顺次类推。固定宽度或比例间隔字体都可使用。可用GLUT_BITMAP_8_Y_13或GLUT_BITMAP_9_BY_15来选择1种固定宽度字体并肯定其参数。也可GLUT_BITMAP_TIMES_ROMAN_10或GLUT_BITMAP_HELVETICA_10来选择10磅的比例间隔字体。12磅的Times-Roman字体和12磅及18磅的Helvetica字体都可以选择。
利用glutBitmapCharacter显示的字符以当前光栅位置作为其位图原点(左下角)。在字符位图装入刷新缓存后,当前光栅位置的x坐标取得1个字符宽度的增量。例如,我们可使用以下程序显示1个包括36个位图字符的文字串。
glRasterPosition2i (x, y);
for (k = 0; k < 36; k++)
glutBitmapCharacter (GLUT_BITMAP_9_BY_15, text [k]);
该字符串用履行glutBitmapCharacter函数前指定的色彩来显示。使用下面的函数可以显示1个轮廓字符。
glutStrokeCharacter (font, character);
在这个函数中,我们可为参数font赋值GLUT_STROKE_ROMAN来显示比例空间的字体,或赋值GLUT_STROKE_MONO_ROMAN来显示常量间隔的字体。字符的大小和位置通过在履行glutStrokeCharacter子程序前指定变换操作来控制。每一个字符显示后,自动实行坐标位移,从而使下1字符在当前字符的右侧显示。轮廓字符生成的文字串是2维或3维场景的1部份,由于它们用线段构成。这样,它们可从各种方向来视察,并在对它们进行缩放时不会变形,还可以通过其他方式对它们进行变换。但与位图字符相比,绘制速度比较慢。
生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠