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

时间: 2024-10-06 22:31:04

计算机图形学(二)输出图元_16_字符函数的相关文章

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

OpenGL曲线函数 生成圆和椭圆等基本曲线的函数并未作为图元功能包含在OpenGL核心库中.但该库包含了显示Bezier样条的功能,该曲线是由一组离散点定义的多项式.OpenGL实用库(GLU)中包含有球面和柱面等三维曲面函数以及生成B样条的函数,它是包含简化Bezier曲线的样条曲线的总集.我们可以使用有理B样条显示圆.椭圆和其他二维曲线.此外,OpenGL实用工具包(GLUT)中还有可以用来显示某些三维曲面(如球面.锥面和其他形体)的函数.然而,所有这些函数比本章中介绍的基本图元应用得更多

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

中点画圆算法 如同光栅画线算法,我们在每个步中以单位间隔取样并确定离指定圆最近的像素位置.对于给定半径r和屏幕中心(xc,yc),可以先使用算法计算圆心在坐标原点(0, 0)的圆的像素位置,然后通过将xc加到x且yc加到y.从而把计算出的每个位置(x,y)移动到其适当的屏幕位置.在第一象限中,圆弧段从x = 0到x = y,曲线的斜率从0变化到-1.0.因此,可以在该八分圆上的正x方向取单位步长,并使用决策参数来确定每一步两个可能的y位置中,哪一个更接近于圆的位置.然后,其他七个八分圆中的位置可

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

中点椭圆算法(上) 这里的方法类似于显示光栅圆.给定参数rx,ry和(xc,yc),首先确定以原点为中心的标准位置椭圆上的点(x,y),然后将这些点平移到以(xc,yc)为中心的椭圆上.如果希望显示不在标准位置的椭圆,那么就绕中心坐标旋转并对长轴和短轴重新定向.但目前仅考虑显示标准位置的椭圆,第4章将讨论变换对象方向和位置的通用方法. 中点椭圆算法将分成两部分应用于第一象限.图3.25给出了依据rx<ry的椭圆斜率对第一象限进行的划分.并通过在斜率绝对值小于1的区域内在x方向取单位步长,以及在斜

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

椭圆生成算法 非严格地说,椭圆是拉长了的圆.还可以说椭圆是经过修改的圆,它的半径从一个方向的最大值变到其正交方向的最小值.椭圆内部这两个正交方向的直线段称为椭圆的长轴和短轴. 椭圆的特征 通过椭圆上任一点到称为椭圆焦点的两个定点的距离可给出椭圆的精确定义:椭圆上任一点到这两点的距离之和都等于一个常数(参见图3.21 ).如果椭圆上的任一点P = (x,y)到两个焦点的距离为d1和d2,那么椭圆的通用方程可以表示为 用焦点坐标F1=(x1,y1)和F2 = (x2,y2)来表示距离d1和d2,可以

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

其他曲线 许多曲线函数在对象建模.动画轨迹的描述.数据和函数的图形化以及其他图形应用中是十分有用的.常见的曲线包括圆锥曲线.三角和指数函数.概率分布.通用多项式和样条函数.这些曲线的显示可采用类似于前面讨论的圆和椭圆函数来生成.沿曲线轨迹的位置可直接从表达式y =f (x)或参数方程中得到.此外,还可以使用增量中点算法绘制用隐式函数f(x,y) = 0描述的曲线. 显示一指定的曲线函数的简单方法是使用直线段来逼近曲线.这时,对于要得到沿曲线轨迹的等距线段的端点位置,则可以使用参数表达式.也可以按

计算机图形学(二)输出图元_20_章节总结(上)

输出图元章节总结 发了好久第2章终于结束了,本章中讨论的输出图元为使用直线.曲线.填充区域.单元阵列样式和文本构造图形提供了基本的工具.我们通过在笛卡儿世界坐标系统中给出几何描述来指定图元. 用于沿线段路径绘制像素的三种方法是DDA算法.Bresenham算法和中点算法,Bresenham算法和中点算法是等同的并且是最有效的.沿线段路径的像素的颜色位存储按照递增地计算内存地址的方式而有效完成.任何线段生成算法都可以通过分割线段并将分割的线段分布到可用处理器上来获得并行的实现. 圆和椭圆采用中点算

计算机图形学(二)输出图元_10_多边形填充区_1_多边形分类和识别

多边形填充区 一个多边形(polygon)在数学上定义为由三个或者更多称为顶点的坐标位置描述的平面图形,这些顶点由称为多边性的边(edge或者side)顺序连接.进一步来看,几何上要求多边形的边除了端点之外没有其他公共点.因此,根据定义,一个多边形在其单一平面上必须有其所有的顶点且边之间无交叉.多边形的例子有三角形.矩形.八边形和十六边形等.有时,任一有封闭折线边界的平面图形暗指一个多边形,而若其没有交叉边则称为标准多边形(( standard polygon)或简单多边形( simple po

计算机图形学和OpenGL(二)坐标系和绘制点线函数

这节开始前我们先了解一下图元的概念.图形软件包中用来描述各种图形元素的函数称为图形输出原语,也称图元(primitive).而描述对象几何要素的输出图元一般称为几何图元.点和线是最简单的几何图元,本节就会简单介绍点和线段的绘制方法. 一.坐标系统. 坐标系统一般分为屏幕坐标和OpenGL中的绘图坐标. 在上一节中我们简单的写了个示例程序,程序中介绍了gluOrtho2D命令.我们可以利用该命令设定一个二维笛卡尔坐标系.该函数的四个变量制定的是显示图形x和y坐标范围.所以我们可以使用下面代码制定一

【计算机图形学课程】二.MFC鼠标响应函数模拟画图软件

上一篇文章我们讲述MFC绘制图形的基本函数,包括绘制直线.绘制矩形.绘制椭圆及绘制文字,同时通过绕圆旋转和矩形平移简单的理解了图形学知识.这篇文章我将介绍鼠标响应和键盘响应,通过这些事件让学生实现一个类似画图的简单软件,同时充分发挥学生想象,自己创作东西.        前文:       [计算机图形学课程]一.MFC基本绘图函数使用方法 一. MFC工程创建及鼠标响应 新建一个MFC 单文档的应用程序"MousePic". 然后,选择"View(视图)"->