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

2022年 11月 28日 发表评论
腾讯云正在大促:点击直达 阿里云超级红包:点击领取
免费/便宜/高性价比服务器汇总入口(已更新):点击这里了解

咸鱼优惠网

本站教程收集整理的这篇文章主要介绍了在c中制作一个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

本站总结

以上是本站教程为你收集整理的在c中制作一个3d文本编辑器全部内容,希望文章能够帮你解决在c中制作一个3d文本编辑器所遇到的程序开发问题。

如果觉得本站教程网站内容还不错,欢迎将本站教程推荐给好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。

小咸鱼

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: