Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OpenGL的使用是否仅限于创建图形密集型软件?_Opengl_User Interface - Fatal编程技术网

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

OpenGL的使用是否仅限于创建图形密集型软件?,opengl,user-interface,Opengl,User Interface,OpenGL在创建UI(特别是在游戏中)方面非常出色,并且具有高度的可移植性。普通(非图形密集型)应用程序使用OpenGL作为其UI是否不寻常?如果没有,原因是什么?它是关于性能还是易于使用 例如,苹果开发者可以使用苹果提供的现成按钮和滑块等;他还可以使用OpenGL创建UI。第二种方法使代码更加灵活和可移植。为什么人们不这样做 如果可移植性是我们的目标,那么使用OpenGL有意义吗?UI不仅仅是图形 例如,字体。用笔画等将中文、日文、韩文、阿拉伯文、泰文按正确的方向呈现,这是一项繁重的工作。微

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


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


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

UI不仅仅是图形

例如,字体。用笔画等将中文、日文、韩文、阿拉伯文、泰文按正确的方向呈现,这是一项繁重的工作。微软、谷歌、苹果、Adobe和其他公司都有专门针对这一主题的团队。如果你直接去德国劳埃德船级社,你必须自己解决这个问题

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

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

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


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

是的,您的建议是可能的。看看搅拌机。Blender使用OpenGL实现了自己的UI,这正是您给出的可移植性原因

然而,用户界面不仅仅是把东西吸引到屏幕上,还有很多东西。事件管理、输入处理、与其他应用程序的互操作性。所有这些都依赖于OpenGL未涵盖的函数

但也有跨平台的应用程序框架库,比如Qt。而整个绘图工具只占这些框架功能的一小部分

使用OpenGL绘制GUI时遇到的一个问题是,系统支持的OpenGL配置文件有很大的变化。它可以从旧的Windows XP机器上的OpenGL-1.1软件回退,到Windows Vista机器上的OpenGL-1.4(Windows安装程序只安装默认驱动程序),再到用户安装正确驱动程序后同一机器上的OpenGL-4.5。您使用OpenGL-4.5的方式在很大程度上与OpenGL-1.4不兼容

对于使用OpenGL后端编写的UI工具包,这意味着您必须实现至少三个代码路径:使用固定函数管道和客户端顶点数组的OpenGL-1.1变体。OpenGL-3兼容性配置文件。以及OpenGL-4核心配置文件


这比仅仅使用特定于操作系统的方法要复杂得多,你无论如何都必须使用这些方法来创建窗口并获取用户输入。

“第二种方法使代码更加灵活和可移植。”这是一种使用现有轮子和重新发明轮子的折衷,但你不能将自行车轮子放在汽车上。同样,你不能将苹果的即用用户界面与PC软件配合使用;但您可以在两种平台上使用OpenGL创建的UI。@DARKMATTER:这就是为什么存在带工具箱的跨平台应用程序框架。例如Qt。@DatenWalf:问题是关于OpenGL和平台特定框架的比较。我不是在寻找跨平台的解决方案;我正试图了解OpenGL的具体情况。你不是说Qt使OpenGL(带有GLFW、GLUT等)过时了,是吗?如果Qt没有它自己的缺点,那么其他的东西都会过时。谢谢你的详细回答。Blender的UI完全是用OpenGL实现的。举个例子。