iOS使用OpenGLES和freetype绘制字体

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS使用OpenGLES和freetype绘制字体相关的知识,希望对你有一定的参考价值。

参考技术A -------------挖个坑,还在学习中------------

第一步,理解内存、bitmap、OpenGLES、freetype的使用

第二步,

实现流程:

调用freetype的接口,将文字写入内存位图

将这块位置拷贝到一个大图上面(更到一个内存位图)

记住它在大图的起始坐标与大小

再将大图写入到纹理,就可以按四边形(两个三角形)来绘制这个文字了

主要分两步:第一步是生成位图,第二步是将位图写入纹理在渲染出来、

freetype,生成的单个字的小位图,你需要将小位图合并到一个大的位图上面(比如1024的大图,可以容纳很多个文字)

再将这个大的位置更新gl纹理对象,后面就是绘制三角形了

char  *pBitmapDatas = new char[nWidth*nHeight*4];

这个就是32位的位图数据,argb 位8位

字多大,你可以通过freetype的接口获取的嘛

也是你自己设置的

那字位图在大位图上的位置呢?

你自己定啊,按固定大小分好格子,一个个的填充

大小取字体的最大宽度与高度

大图是为了优化速度用的

不做优化的话,直接一个文字一个贴图,也是可以的

效果是一样的

大图是为了做批渲染,优化渲染速度

以上是关于iOS使用OpenGLES和freetype绘制字体的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 上使用具有多个 VBO 和 IBO(多个对象)OpenGLES 2 的 VAO 进行绘制

OpenGL ES

OpenGL ES 2.0,使用多个顶点缓冲区进行绘制

LGVL配合FreeType为可变字体设置字重-ESP32篇

使用 Freetype 和 OpenGL 渲染字体

FreeType - 纹理图集 - 为什么我的文字渲染为四边形?