第四十章 文本渲染总结(未完结)

OpenGL不直接支持文本渲染,通常通过位图字体或FreeType库实现。位图字体预光栅化,易于实现但不灵活。FreeType库支持TrueType字体,通过数学公式定义字符,可按需生成高质量位图,适用于不同尺寸。加载字体、设置大小后,使用FT_Load_Char获取位图。

OpenGL本身没有包含任何的文本处理能力,需要自己定义一套全新的系统让OpenGL绘制文本到屏幕上,但是文本字符没有图元。
可以通过GL_LINES来绘制自行,创建文本的3D网格,或者是将3D环境中字符纹理渲染到2D四边形上。
常用的方法是:将字符纹理绘制到四边形上。

经典文本渲染:位图字体
早期,渲染文本是通过选择一个需要的字体,并提取这个字体中所有相关的字符,将其放到一个单独的大纹理中来实现。————位图字体
在纹理的预定义区域中包含了想要使用的所有字符。字体的这些字符被称为字形,每个字形都关联着一个特定的纹理坐标区域。
想渲染一个字符的时候,只需要通过渲染这一块特定的位图字体区域到2D四边形即可。
使用方法是:
取一张位图字体,通过选择纹理坐标,从纹理中采样对应的字形,渲染到多个2D四边形上。
补充:位图字体通过Codehead的位图生成器生成的。
优点:容易实现,位图字体已经预光栅化了,效率很高。
缺点:不够灵活,当使用不同的字体时,需要重新编译一套全新的位图字体,而且程序被限制在一个固定的分辨率。文本进行放大可以看到像素边缘。
通常会局限于非常小的字符集,如果想让其支持Extended或Unicode字符就不现实。

下面可以看下现代文本渲染:FreeType库,加载TrueType字体的方式
TrueType是一个能用于加载字体,将其渲染到位图以及提供多种字体相关的操作的软件开发库。是跨平台字体库。
吸引点是:能够加载TrueType字体。
TrueType字体不是用像素或不可缩放的方式来定义的,是通过数学公式,也就是曲线的组合来定义的。
这些光栅化后的字体图像可以根据需要的字体高度来生成,可以轻松的渲染不同大小的字形而不造成任何质量损失。
下载地址:http://www.freetype.org/ 将freetype.lib添加到项目的链接库中,并确认编译器知道头文件的位置。
#include <ft2build.h>
#include FT_FREETYPE_H
补充:该头文件需要保存在include目录的根目录下。

FreeType库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值