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

news/2024/12/22 9:57:48/

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

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

下面可以看下现代文本渲染:FreeType库,加载TrueType字体的方式
TrueType是一个能用于加载字体,将其渲染到位图以及提供多种字体相关的操作的软件开发库。是跨平台字体库。
吸引点是:能够加载TrueType字体。
TrueType字体不是用像素或不可缩放的方式来定义的,是通过数学公式,也就是曲线的组合来定义的。<


http://www.ppmy.cn/news/47057.html

相关文章

手势控制的机器人手臂

将向你展示如何构建机械手臂并使用手势和计算机视觉来控制它。下面有一个在开发阶段的机械手臂的演示视频。 展示开发中的手臂的演示视频&#xff1a;https://youtu.be/KwiwetZGv0s 如图所示&#xff0c;该过程首先用摄像头捕捉我的手及其标志。通过跟踪特定的界标&#xff0c;…

(7)(7.5) 电机推力比例

文章目录 前言 1 推力曲线 2 推力支架 3 参数计算 前言 Copter 包括电机推力比例,补偿了大多数电调和电机的非线性推力输出。

短轮询、长轮询、SSE 和 WebSocket 间的区别

即时通讯的实现&#xff1a;短轮询、长轮询、SSE 和 WebSocket 间的区别 学习内容&#xff1a; 短轮询&#xff1a;短轮询是一种客户端与服务器之间的通讯方式&#xff0c;客户端定期向服务器发送请求&#xff0c;以检查是否有新消息。如果没有新消息&#xff0c;服务器会返回…

迷宫问题-DFS-BFS

迷宫问题 迷宫问题简介BFS解决迷宫最短路径问题DFS记录迷宫路径DFS解决迷宫所有路径问题 迷宫问题简介 &#x1f680;学习过算法程序设计的应该都学习过迷宫这个问题&#xff0c;迷宫问题主要设计的算法就是DFS-深度优先遍历和BFS-广度优先遍历。 &#x1f680;在一个二维数组…

gpt4all保姆级使用教程! 不用联网! 本地就能跑的GPT

原文&#xff1a;gpt4all保姆级使用教程! 不用联网! 本地就能跑的GPT 什么是gpt4all gpt4all是在大量干净数据上训练的一个开源聊天机器人的生态系统。它不用科学上网&#xff01;甚至可以不联网&#xff01;本地就能用&#xff0c;像这样↓&#xff1a; 如何使用&#xff…

Transactional事务失效场景汇总

文章目录 1、前言2、失效场景2.1、Service没有被Spring管理2.2、事务方法被final、static关键字修饰2.3、同一个类中&#xff0c;方法内部调用2.4、方法的访问权限不是public2.5、数据库的存储引擎不支持事务2.6、Transactional 注解配置错误2.7、使用了错误的事务传播机制2.8、…

【校招VIP】浙大、上海交大、北航等顶级985都参加的大厂校招计划 前两年就业率97%

我们除了互联网的业务外&#xff0c;还有一个比较厉害的小业务&#xff0c;叫稳拿计划。 国内有很多985的学生都报考了大厂的就业班稳拿计划&#xff0c;且过去几届的就业率都达到了97%以上。 只有极少数人&#xff0c;没有找到符合要求的工作。 如果学员没有达到我们规定的…

vue3+ts+pinia+vite一次性全搞懂

vue3tspiniavite项目 一&#xff1a;新建一个vue3ts的项目二&#xff1a;安装一些依赖三&#xff1a;pinia介绍、安装、使用介绍pinia页面使用pinia修改pinia中的值 四&#xff1a;typescript的使用类型初识枚举 一&#xff1a;新建一个vue3ts的项目 前提是所处vue环境为vue3&…