OpenGL 的使用是否仅限于创建图形密集型软件?

DAR*_*TER 0 opengl user-interface

OpenGL 在创建 UI 方面非常出色(特别是在游戏中),并且具有高度的可移植性。普通(非图形密集型)应用程序使用 OpenGL 作为其 UI 是否不寻常?如果不是,为什么?是关于性能还是易用性?

例如,Apple 开发人员可以使用 Apple 提供的即用型按钮和滑块等;他还可以使用 OpenGL 创建 UI。第二种方法使代码更加灵活和可移植。为什么人们不这样做?

如果可移植性是我们的目标,那么使用 OpenGL 有意义吗?

gma*_*man 5

UI 不仅仅是图形。

作为一个示例字体。用笔画等在正确的方向上渲染中文、日语、韩语、阿拉伯语、泰语,这是一项大量的工作。微软、谷歌、苹果、Adobe 和其他公司的整个团队都致力于这个主题。如果你直接去 GL 你将不得不自己解决这个问题。

另一个例子,原生控件。iOS 用户期望某些控件以某种方式工作。Android 用户期望有所不同。对于通常没有问题的游戏,游戏通常具有非常独特的 UI。另一方面,通常希望应用程序遵守其目标平台的约定。通常,当控件与他们的原生平台不匹配时,用户会感到不安。将 GL 用于您的 UI 意味着您将无法获得本机控件。

同样,文本编辑是一个非常特定于平台的功能。是拖动选择,右键选择,按住选择?哪些键在哪,它们是如何工作的?是 Ctrl-V 还是 ?-V。所有这些也依赖于平台。您可以使用本机文本编辑控件并解决问题,或者您可以使用 GL 并且不仅要重现所有代码来编辑文本,还要尝试使其在每个配置的每个平台上以正确的方式工作。您的 GL 文本编辑器可以处理日语键盘吗?德文键盘?它是否处理 CJK 和其他人的输入法编辑器?

因此,更重要的是为正确的工作选择正确的工具。有在 GL 之上编写的整个 UI 平台。在 Metal OSX 可能是其中之一(或者仍然是?)但如果你跳过它并直接在 GL 上构建你的 UI,你最终将不得不实现所有这些中间部分。

当然,GL 可能是某些非游戏应用程序的正确选择。Paper是一款 98% GL 的应用程序,因此具有便携性。另一方面,Evernote可能在另一边。它需要处理每种语言、不同的字体、残障用户的输入等。所有这些都内置在操作系统中,而不是 GL。

  • Blender 的 UI 完全用 OpenGL 实现。仅举一个例子。 (2认同)