计算机图形学(二)输出图元_16_字符函数

原创 2016年05月30日 21:27:16
OpenGL 字符函数
       OpenGL基本库仅为显示单个字符和文字串提供了基本的支持。我们可以定义图3.61中的位图字符,并将一个位图集作为字库存储。一个文字串通过将从字库中选择的位图序列映射到帧缓存的

相邻位置来显示。


       但是,OpenGL实用函数工具包(GLUT)中有一些预定义的字库。因此我们不用创建自己的位图字型库,除非需要显示GLUT中没有的字体。GLUT子程序可显示位图和轮廓字体。GLUT位图字体由OpenGL的glBitmap函数来绘制,而轮廓字体由折线边界(GL_LINE_STRIP)生成。
       使用下面的函数可显示GLUT位图字符:

glutBitmapCharacter (font, character);
       这里参数font用GLUT符号常量赋值,用来指定一特定字型集,参数character赋以ASCII编码或其他要显示的字符。这样,要显示大写的"A",可以使用ASCII编码65或指定为‘A’。同样,编码66与‘B’等效,编码97与小写字符‘a’等效,编码98与‘b’等效,依次类推。固定宽度或比例间隔字体都可以使用。可用GLUT_BITMAP_8_Y_13GLUT_BITMAP_9_BY_15来选择一种固定宽度字体并确定其参数。也可GLUT_BITMAP_TIMES_ROMAN_10GLUT_BITMAP_HELVETICA_10来选择10磅的比例间隔字体。12磅的Times-Roman字体和12磅及18磅的Helvetica字体都可以选择。
       利用glutBitmapCharacter显示的字符以当前光栅位置作为其位图原点(左下角)。在字符位图装入刷新缓存后,当前光栅位置的x坐标获得一个字符宽度的增量。例如,我们可以使用下列程序显示一个包括36个位图字符的文字串。

glRasterPosition2i (x, y);
for (k = 0; k < 36; k++)
    glutBitmapCharacter (GLUT_BITMAP_9_BY_15, text [k]);
该字符串用执行glutBitmapCharacter函数前指定的颜色来显示。使用下面的函数可以显示一个轮廓字符。
glutStrokeCharacter (font, character);
        在这个函数中,我们可为参数font赋值GLUT_STROKE_ROMAN来显示比例空间的字体,或赋值GLUT_STROKE_MONO_ROMAN来显示常量间隔的字体。字符的大小和位置通过在执行glutStrokeCharacter子程序前指定变换操作来控制。每个字符显示后,自动实施坐标位移,从而使下一字符在当前字符的右边显示。轮廓字符生成的文字串是二维或三维场景的一部分,因为它们用线段构成。这样,它们可从各种方向来观察,并在对它们进行缩放时不会变形,还可以通过其他方式对它们进行变换。但与位图字符相比,绘制速度比较慢。

相关文章推荐

计算机图形学(二)输出图元_13_像素阵列图元

像素阵列图元 除了线段、多边形、圆和其他图元之外,图形软件包常提供一些子程序用于显示由矩形的彩色阵列定义的各种形状。矩形的网格图案一可通过数字化(扫描)一张照片或其他图形来获得,也可以使...

OpenGL函数

      开发基于OpenGL的应用程序,必须先了解OpenGL的库函数。它采用C语言风格,提供大量的函数来进行图形的处理和显示。OpenGL图形库一共有100多个函数,它们分别属于OpenGL的基...
  • Augusdi
  • Augusdi
  • 2010年05月28日 13:51
  • 3180

计算机图形学(二)输出图元_6_OpenGL曲线函数_3_椭圆生成算法

通过椭圆上任一点到称为椭圆焦点的两个定点的距离可给出椭圆的精确定义:椭圆上任一点到这两点的距离之和都等于一个常数(参见图3.21 )。如果椭圆上的任一点P = (x,y)到两个焦点的距离为d1和d2,...

计算机图形学(二)输出图元_2_ OpenGL画线函数

图形软件包一般都提供一个描述一条或多条直线段的函数,其中每一直线段由两个端点坐标位置定义。在OpenGL中,和选择一个点位置一样,我们使用glVertex函数选择单个端点的坐标位置。我们使用一对glB...

计算机图形学(二)输出图元_19_显示窗口重定形函数

在介绍性的OpenGL程序中,我们讨论了建立初始显示窗口的函数。但是在生成图形后,常需要用鼠标将显示窗口拖到屏幕的另一位置或改变其形状。改变显示窗口的尺寸可能改变其纵横比并引起对象形状的改变。下列程序...

计算机图形学(二)输出图元_11_OpenGL多边形填充区函数(下)

多数图形软件包使用逼近平面片来显示曲面。这是因为平面方程是线性的,而处理线性方程比二次或其他类曲线方程快得多。因此OpenGL和其他图形软件包提供多边形图元来实施曲面的逼近。对象用多边形网络来建模,而...

计算机图形学(二)输出图元_6_OpenGL曲线函数_5_其他曲线

许多曲线函数在对象建模、动画轨迹的描述、数据和函数的图形化以及其他图形应用中是十分有用的。常见的曲线包括圆锥曲线、三角和指数函数、概率分布、通用多项式和样条函数。这些曲线的显示可采用类似于前面讨论的圆...

计算机图形学(二)输出图元_11_OpenGL多边形填充区函数(上)

描述填充多边形的OpenGL过程与描述点和折线类似,但有一个例外。函数glVertex用来输入多边形的一个顶点坐标,而完整的多边形用从glBegin到glEnd之间的一组顶点来描述。但有另外一个函数可...

计算机图形学(二)输出图元_6_OpenGL曲线函数_2_中点画圆算法

如同光栅画线算法,我们在每个步中以单位间隔取样并确定离指定圆最近的像素位置。对于给定半径r和屏幕中心(xc,yc),可以先使用算法计算圆心在坐标原点(0, 0)的圆的像素位置,然后通过将xc加到x且y...

计算机图形学(二)输出图元_6_OpenGL曲线函数_4_中点椭圆算法(上)

这里的方法类似于显示光栅圆。给定参数rx,ry和(xc,yc),首先确定以原点为中心的标准位置椭圆上的点(x,y),然后将这些点平移到以(xc,yc)为中心的椭圆上。如果希望显示不在标准位置的椭圆,那...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:计算机图形学(二)输出图元_16_字符函数
举报原因:
原因补充:

(最多只允许输入30个字)