在桌面应用程序中使用OpenGL进行GUI设计有什么缺点?

alv*_*tar 12 c++ opengl user-interface

C/C++有很多GUI库,但很少有人基于opengl是一个相当多平台的图形库.使用这个OpenGL在便携式应用程序中构建自己的最小GUI有什么大的缺点吗?

Blender正在这样做,似乎它适用于它.

编辑:我的问题不在于使用外部库或自己创建.我主要关心的是使用opengl作为后端的库.例如,Agar,CEGUI或Blender的GUI.

谢谢.

dmc*_*kee 12

这是一个奇怪的例子,它涉及我所做的大型物理实验:因为OpenGL GUI绕过了一些常见的图形抽象层,它可能会击败远程查看应用程序.

在特定情况下,我想我们想要允许通过VNC进行远程移位操作.除了使用OpenGL接口的一个程序(我们每小时只需要一次,但我们真的需要)之外,一切都运行良好.我们不得不推迟到可以准备远程版本的OpenGL接口.

  • 实际上,远程使用支持 OpenGL 的应用程序有多种可能性,例如 xvnc/xf4vnc、virtualgl 甚至只是普通的 X11。最佳解决方案取决于您希望 OpenGL 硬件加速是在远程机器上还是在本地查看器上完成。 (2认同)

gro*_*ver 8

您正在失去可访问性的本机平台功能.例如,在Windows上,大多数控件向屏幕阅读器或支持可访问性受损用户的其他工具提供信息.

基本上除非你有真正的理由这样做,否则你不应该这样做.


i_a*_*orf 5

重新发明轮子:是的,你会这么做的。但我注意到OP在问题陈述中使用了“最小”这个词,所以假设它真的不需要扩展到所有这些,它可能是一个足够小的轮子,所以并不重要。我目前开发的产品在三个平台(Win、Mac、Linux)上支持 OpenGL,并且我们构建了自己的所有小部件(文本框、按钮、对话框)。这是一项繁重的工作,但现在我们已经完成了它,我们拥有了很大一部分堆栈,当事情没有按预期工作时,不必调试到第三方框架。完全控制体验真是太好了。总有一些你想做但框架不支持的事情。就像我们业务中的所有事情一样,这是一种权衡,您只需权衡您的需求与按时完成的需求即可。

可移植性:是的,您仍然需要编写特定于平台的代码来引导所有内容。如果您以前没有这样做过,这将很困难,因为它要求您了解所有目标平台。

Windows 驱动程序:我们发现显卡制造商对 Windows 上的 DirectX 的支持比 OpenGL 更好,因为这是获得 MSFT 认证所必需的。中低端卡通常在 OpenGL 支持方面存在错误、功能缺失或彻底崩溃。