文章目录
- 一、简介
- 二、实现代码
- 三、实现效果
- 参考资料
一、简介
这里通过创建纹理的缓冲区来实现文本的绘制,主要的步骤如下所述:
1. 使用一个轻量级的库stb(它类似于freetype,只不过更为轻便)读取字体的字形,它涉及到字体的高度、宽度、字间距等等信息。
2.使用OpenGL创建一个纹理缓冲区,将各个字符如A/B/C…,均写入到这个纹理缓冲区中,方便后续的使用。
3.经过以上两步的预处理,现在我们手上有个字符的纹理图像,类似于下面这样:
此时,根据我们输入的文本,确定我们文本的范围大小。毕竟我们的字符是一个一个的,我们需要将它们拼接起来,确定每个字符的大小,字间距以及整体文本的范围大小,从而确定我们需要绘制的区域(三角面片)。此外,就是需要计算出每个字体的纹理坐标与每个面片顶点进行关联。
4.最后,就是最简单的部分,使用OpenGL绘制面片,颜色需要根据对应的纹理坐标进行着色即可绘制出我们需要的文本了。
二、实现代码
绘制字符的头文件:STBFontTrueType.h,不过由于太大放不到博客中,如有需要请私信我。
TextGLDrawable.h