计算机图形与OpenGL学习二(输出图元5:字符图元)

本文深入探讨了字符设计的两大风格——有衬线和无衬线字体,并对比了位图字体和轮廓字体的不同特点及存储方法。同时介绍了OpenGL中用于显示字符的两种函数:位图字符函数和轮廓字符函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【字符图元】



【字体/字样】一组字符的完整设计风格
【有衬线/无衬线字体】是字体可分的两大类,有衬线字体在字符主笔划末端带有细线或笔划加重,而无衬线字体没有。有衬线字体可读性较好,容易阅读。无衬线字体的单个字符容易被识别。


计算机字体存储方法
位图字体:也称为光栅字体,使用矩阵网格表示某种字体,如下图
 
【位图字体的特点】
当把图中的图案复制到帧缓存的某个区域时,值为1的位确定监视器上对应哪一个像素位置将要用指定颜色显示。
字图字体的定义和显示简单,仅需将字符网格映射到帧缓存的位置
每一种(尺寸和格式的)变化都必须储存,因此位图字体通常需要更多的存储空间
只能以像素大小的整数倍方式增加或减少字符位图的尺寸,增加了边缘粗糙度的表现。


轮廓字体:用直线和曲线段来描述字符形状。
 
【轮廓字体的特点】
与位图字体相比,轮廓字体在增加大小时其字符形状不会变形。如上图所示
轮廓字体需要较少的存储空间
通过控制字符轮廓曲线的定义,可以产生粗体斜体或不同尺寸的字体
需要更多时间来处理轮廓字体(需要计算与扫面转换到帧缓存中)



OpenGL字符函数
位图字符函数
使用下面的函数可显示GLUT位图字符
glutBitmapCharacter(FONT, character);
FONT:符号常量,用以确定字体和大小,有GLUT_BITMAP_8_BY_13, GLUT_BITMAP_9_BY_15来选择一种固定宽度字体。也可用GLUT_BITMAP_TIMES_ROMAN_10或GLUT_BITMAP_TIMES_HELVETICA_10选择罗马字体或HELVERICA字体。
Character:要显示的字符
【实例】
glColor3f(1.0, 0.0, 0.2);//设定字体的RGB颜色
	char text[12]= { "hello world" };
	glRasterPos2f(100.0f, 100.0f);
	for (int k = 0; k < 12;++k)
	glutBitmapCharacter(GLUT_BITMAP_9_BY_15, text[k]);

 
②轮廓字符函数
使用下面的函数可显示GLUT轮廓字符
glutStrokeCharacter(FONT, text[k]);
FONT:符号常量,用以确定字体和大小,有GLUT_STROKE_ROMAN来显示比例空间的字体。或GLUT_STROKE_MONO_ROMAN来显示常量间隔的字体。字符的大小和位置以后讨论
Character:要显示的字符
【实例】
char text[12]= { "hello" };
	glRasterPos2f(100.0f, 100.0f);//轮廓字符位置控制在这里没有用
	for (int k = 0; k < 12;++k)
	glutStrokeCharacter(GLUT_STROKE_ROMAN, text[k]);

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值