计算机图形学(二)输出图元_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子程序前指定变换操作来控制。每个字符显示后,自动实施坐标位移,从而使下一字符在当前字符的右边显示。轮廓字符生成的文字串是二维或三维场景的一部分,因为它们用线段构成。这样,它们可从各种方向来观察,并在对它们进行缩放时不会变形,还可以通过其他方式对它们进行变换。但与位图字符相比,绘制速度比较慢。

计算机图形学(二)输出图元

对于每一类场景,要描述每一对象的结构及其在场景中的坐标位置。图形软件包中用来描述各种图形元素的函数称为图形输出原语(graphics output primitive ),或简称为图元(primiti...
  • heyuchang666
  • heyuchang666
  • 2016年04月14日 16:27
  • 1111

计算机图形学(第四版)- 输出图元-读书笔记P37

[百日读书计划]Day2-计算机图形学(第四版)- 输出图元- 读书笔记P37
  • jinlin_23
  • jinlin_23
  • 2016年09月12日 20:27
  • 616

计算机图形学(二)输出图元_9_填充区图元

尽管有可能使用各种形状,但图形库一般不支持任意填充形状的描述。多数库函数要求填充区指定为多边形。由于多边形有线性边界,因而比其他填充形状更容易处理。另外,多数曲面可用一组适当的多边形面片来逼近,就如曲...
  • heyuchang666
  • heyuchang666
  • 2016年05月07日 14:32
  • 868

计算机图形学(二)输出图元_15_字符图元

和其他图元一样,字符的几何描述在世界坐标系中给出,该信息由观察变换映射到屏幕坐标系。位图字符使用矩形网格的二进制值及网格参考位置来描述。该位置随后被映射到帧缓存中的指定位置。轮廓字符由一组用曲线或线段...
  • heyuchang666
  • heyuchang666
  • 2016年05月27日 10:06
  • 864

计算机图形学(二)输出图元_1_OpenGL画点函数

OpenGL中的坐标位置可以有二维、三维或四维。g1Vertex的后缀为2、3或4表示其坐标位置的维数。四维描述意味着齐次坐标(homogeneous-coordinate)表示,其中的齐次参数h(第...
  • heyuchang666
  • heyuchang666
  • 2016年04月14日 17:18
  • 2308

计算机图形学(二)输出图元_12_OpenGL顶点数组

为了简化这些问题,OpenGL提供了一种机制来减少处理坐标信息的函数调用数量。使用顶点数组(vertex array ),可以利用很少的函数调用来安排场景的描述信息。步骤如下: 1.引用函数glEna...
  • heyuchang666
  • heyuchang666
  • 2016年05月21日 18:41
  • 4643

计算机图形学(二)输出图元_17_图形分割

有的图形软件包中提供了子程序,描述由多个命名部分组合而成的图形并管理每一部分。使用这些函数可以创建、编辑、删除或移动图形的一个组成部分。我们也可使用图形软件的这个功能来进行层次式建模(以后会说到),其...
  • heyuchang666
  • heyuchang666
  • 2016年05月31日 19:40
  • 2868

计算机图形学(三)_图元的属性

通常,任何影响图元显示方法的参数一般称为属性参数(attribute parameter)。诸如颜色和大小等属性参数确定了图元的基本特性。其他则指出在特定条件下怎样显示图元。特定条件属性的例子有在交互...
  • heyuchang666
  • heyuchang666
  • 2016年06月16日 16:35
  • 1826

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

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

计算机图形学(三)_图元的属性_4_线的属性_1_线宽

管绘制水平或垂直段的方法可以快速地生成粗线,但是显示的线宽(在线路径垂直方向测量)依赖于它的斜率。45°线的宽度是用等长像素段绘制的水平或垂直线条宽度的1/√2。使用水平或垂直像素段实现宽度选择的另一...
  • heyuchang666
  • heyuchang666
  • 2016年06月23日 18:24
  • 2147
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:计算机图形学(二)输出图元_16_字符函数
举报原因:
原因补充:

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