[发明专利]一种基于FreeType的双缓存文字统一快速渲染方法在审
| 申请号: | 202211319499.3 | 申请日: | 2022-10-26 |
| 公开(公告)号: | CN115631262A | 公开(公告)日: | 2023-01-20 |
| 发明(设计)人: | 张亚平;文圣丰;于翔;吴楠;柴睿鸽;王璇;刘书羽 | 申请(专利权)人: | 中国航空工业集团公司西安航空计算技术研究所 |
| 主分类号: | G06T11/60 | 分类号: | G06T11/60;G06T11/00;G06F40/126;G06F40/109 |
| 代理公司: | 北京清大紫荆知识产权代理有限公司 11718 | 代理人: | 周晓飞 |
| 地址: | 710065 陕*** | 国省代码: | 陕西;61 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 基于 freetype 缓存 文字 统一 快速 渲染 方法 | ||
1.一种基于FreeType的双缓存文字统一快速渲染方法,其特征在于,包括:
在程序初始化时设置大纹理存储区、纹理更新缓存区和位图数据缓存区;所述大纹理存储区用于存储已绘制文字的字符纹理,所述纹理更新缓存区用于存储已绘制文字的字符编码,所述位图数据缓存区用于存储与所述字符编码对应的位图数据对象;
根据待绘制文字的字符编码和设定的字体大小,采用FreeType生成对应的位图数据,使用OpenGL函数将该位图数据转换为字符纹理;将该字符纹理存储在所述大纹理存储区,将待绘制文字的字符编码存储在所述纹理更新缓存区,将位图数据存储在所述位图数据缓存区中对应的位图数据对象里;
根据文字是否被绘制过和该文字的字符纹理是否在所述大纹理存储区中,设置位图数据对象的状态值,若该文字没有被绘制过,则状态值为初始值0;若该文字被绘制过且字符纹理在所述大纹理存储区中,则状态值设置为1;若该文字被绘制过但字符纹理在所述大纹理存储区中被剔除,则状态值设置为2;
根据待绘制文字的字符编码索引到所述位图数据缓存区中的位图数据对象,获得位图数据、状态值、在大纹理存储区中的位置信息;
状态值为1时,可根据位置信息直接获得字符纹理,并在所述纹理更新缓存区找到对应的字符编码,将该字符编码更新至该纹理更新缓存区的第一位;
状态值为0时,使用FreeType获得文字的位图数据,再使用OpenGL将位图数据生成字符纹理;
状态值为2时,取出位图数据对象中的位图数据,使用OpenGL将位图数据生成字符纹理;
使用OpenGL函数对字符纹理进行纹理贴图完成文字的渲染。
2.根据权利要求1所述的双缓存文字统一快速渲染方法,其特征在于,所述大纹理存储区和所述纹理更新缓存区的存储量相等,所述大纹理存储区存储的字符纹理与所述纹理更新缓存区存储的字符编码一一对应。
3.根据权利要求1所述的双缓存文字统一快速渲染方法,其特征在于,还包括:
当状态值为0或2时,依据所述大纹理存储区的空间状态更新所述位图数据缓存区和所述纹理更新缓存区,具体包括:
所述大纹理存储区的空间状态未满时,将生成的字符纹理存储在所述大纹理存储区中,根据存储的位置信息更新文字对应的位图数据对象的位置属性并将其状态值设置为1,将对应的字符编码置于所述纹理更新缓存区的第一位;
所述大纹理存储区的空间状态满时,首先将所述纹理更新缓存区的最后一个字符编码取出,并根据该字符编码索引到所述位图数据缓存区中的对应位图数据对象,设置其状态值为2,然后根据位图数据对象的位置属性找到所述大纹理存储区中该字符纹理的位置信息,将其在所述大纹理存储区中替换成新生成的字符纹理,然后根据位置信息设置新绘制文字对应的位图数据对象的位置属性,并将其状态值设置为1,最后将新绘制文字的字符编码置于所述纹理更新缓存区的第一位。
4.根据权利要求1所述的双缓存文字统一快速渲染方法,其特征在于,还包括:
状态值设置为0时,该文字的位图数据对象中的位图数据和位置信息无效;
状态值设置为1时,该文字的位图数据对象中的位图数据和位置信息有效;
状态值设置为2时,该文字的位图数据对象中的位置信息无效,位图数据有效。
5.根据权利要求1所述的双缓存文字统一快速渲染方法,其特征在于,还包括:
将字符纹理存储在所述大纹理存储区时,该字符纹理的宽高设置为字体的大小。
6.根据权利要求5所述的双缓存文字统一快速渲染方法,其特征在于,所述字符纹理以指示字符纹理存储的起始位置坐标为依据存储于所述大纹理存储区中,该起始位置坐标以字体大小为步长增加。
7.根据权利要求1所述的双缓存文字统一快速渲染方法,其特征在于,还包括:
程序初始化时申请纹理缓存数组,所述纹理缓存数组包括:纹理坐标数组、颜色数组和绘制位置坐标数组;
当字符纹理生成后,先将字符纹理在所述大纹理存储区中的位置、文字颜色和其在屏幕上绘制的位置,分别存储到所述纹理坐标数组、颜色数组和绘制位置坐标数组中;再利用所述纹理缓存数组,使用OpenGL函数对每个字符纹理进行实时纹理贴图,对所有文字统一渲染。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国航空工业集团公司西安航空计算技术研究所,未经中国航空工业集团公司西安航空计算技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202211319499.3/1.html,转载请声明来源钻瓜专利网。





