微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

OS本地2D API与OpenGL

假设我想从头开始创build一个文本编辑器。

我周围search,每个人都build议使用操作系统特定的本机2D API(例如Windows中的GDI +或Linux中的XLib),尤其是字体渲染。

我的问题是:为什么openGL不适合这样的任务? 为什么使用openGL在文本编辑器中渲染抗锯齿的文本和控件是非常困难的,为什么我更喜欢本地2D OS API的非便携方式?

一个任务运行一个固定数量的指令?

Linux 3.0:使用pipe道stdin / stdout执行subprocess

如果我创build了一个stream程,这是否意味着我将永远能够终止它?

Linux中的pthread_mutex_t是否是重入的(如果一个线程试图获得一个已经存在的锁,那么请求成功)

GNU / Linux中抽象抽象的绝对最低水平是什么?

multithreading服务器问题

你通常在哪里安装你从源代码构build的libaries的debugging版本?

epoll集合中fd和关联状态的映射

线程安全的方式来转换时区之间的时间

Linux进程ID和线程ID

部分难点在于OpenGL不提供专门用于呈现文本的字体引擎或任何功能。 换句话说,这不是OpenGL不适合渲染任务的部分,只是OpenGL缺少了很多必要的任务。

为了在OpenGL下渲染文本,通常从一些字体引擎开始,例如使用TrueType或OpenType字体,并从其信息(例如FreeType)渲染字形。 然后你需要一个文本显示引擎来弄清楚如何渲染字符来正确显示你的字符串。 像英文这样简单的例子,就必须处理一些事情,比如字里行间。 在像一些阿拉伯语脚本这样的复杂情况下,基本上需要在文本渲染和字体渲染之间进行反馈,因为字符可以根据字符串中的上下文采取不同的形式。

简而言之,编写一个通过OpenGL呈现其文本的文本编辑器意味着从头开始重新构建大量的文本渲染堆栈。

如果您对渲染质量不太在乎,那么只需将一些字体渲染为位图,然后使用它们显示文本即可。 这可以简化代码相当多,但是一个简单的实现将意味着产生类似于MS-DOS命令行的输出。 即使匹配Windows 3.0的输出质量也需要相当的工作量。 这并不是说它不能完成 – 但是这可能会使撰写文本编辑器的编辑部分变得困难。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐