加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

在c中制作一个3d文本编辑器

发布时间:2020-12-13 19:23:43 所属栏目:Linux 来源:网络整理
导读:目前我正在为linux系统编写一个文本编辑器,它可以执行一些涉及opengl渲染的特定文本/字体突出显示.有没有人建议使用适合linux的c图形渲染库(特别是现在的ubuntu)? 并建议从哪里开始渲染3D文本非常感谢! 编辑:只是为了澄清渲染3d文本是项目的严格要求. 最

目前我正在为linux系统编写一个文本编辑器,它可以执行一些涉及opengl渲染的特定文本/字体突出显示.有没有人建议使用适合linux的c图形渲染库(特别是现在的ubuntu)?

并建议从哪里开始渲染3D文本非常感谢!

编辑:只是为了澄清渲染3d文本是项目的严格要求.

最佳答案
在OpenGL级别基本上只有三种方法:

光栅字体.

使用glBitmap或glDrawPixels在屏幕上绘制一组矩形像素.这样做的缺点很多:
描述每个字符的数据每帧都从CPU发送到图形卡 – 以及帧中的每个字符.这可能相当于显着的带宽.
底层的OpenGL实现几乎肯定必须以某种方式在CPU和帧缓冲区之间“混合”图像数据.
许多3D图形芯片根本不是为了绘制位图而设计的.在这种情况下,OpenGL软件驱动程序必须等到3D硬件完全完成绘制,然后才能将像素直接溅入帧缓冲区.在软件完成之前,硬件处于空闲状态.
位图和Drawpixels必须平行于屏幕边缘对齐,因此无法旋转文本.
缩放位图和Drawpixels是不可能的.
Raster字体有一个显着的优点 – 那就是在纯软件OpenGL实现上,它们可能比其他方法更快……与3D硬件情况相反.

几何字体.
使用几何图元(线条,三角形等)绘制字体的字符.这样做的缺点是:
绘制一些字符所需的三角形数量可能非常大 – 特别是如果您希望它们看起来很好.这可能对性能不利.
设计字体既困难又昂贵.
使用彩色边框,阴影等进行字体处理会显着加剧其他两个问题.

优点是:
几何字体可以缩放,旋转,扭曲,变形,挤压.
您可以使用精美的灯光模型,环境贴图,纹理等.
如果在3D世界中使用,您可以使用它们执行碰撞检测.
几何字体很好地缩放.它们没有表现出错误的锯齿伪影,并且它们在扩大时不会变得“模糊”.

纹理映射字体.
通常,整个字体存储在一个或两个大纹理贴图中,每个字母绘制为单个四边形.缺点是:
您需要的纹理贴图的大小可能必须非常大 – 特别是如果您需要大写和小写 – 和/或如果您想使字体在大点大小时看起来很好.这对于仅支持有限纹理贴图大小的硬件尤其是一个问题(例如3Dfx Voodoo只能渲染高达256×256的地图)
如果使用MIPmapping,则缩放字体会使其看起来模糊不清.如果你不使用MIPmapping,它看起来会很可怕.

优点是:
一般性 – 您可以为字体的每个字母使用任意全彩色图像.
纹理字体可以旋转和缩放 – 尽管它们看起来总是“平坦”.
将其他类型的字体转换为纹理贴图很容易.
您可以在3D场景中绘制它们,它们将被正确照亮.
速度!纹理字体只需要将一个四边形发送到每个字母的硬件.这可能比Raster或Geometric字体快一个数量级.由于低端3D硬件经过高度优化,可以绘制简单的纹理多边形,因此您可以通过渲染器“快速通过”速度,从而提高速度. (CAVEAT:在纯软件OpenGL上,纹理字体将是S-L-O-W.

一些免费字体库的链接:

> glut
> glTexFont
> fnt
> GLTT
> freetype

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读