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

时间:2009-04-06 14:47:48

标签: c++ user-interface opengl

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

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

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

感谢。

7 个答案:

答案 0 :(得分:12)

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

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

答案 1 :(得分:8)

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

除非你有真正的理由这样做,否则你不应该这样做。

答案 2 :(得分:4)

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

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

Windows驱动程序:我们发现显卡制造商对Windows上的DirectX的支持远远超过OpenGL,因为这是获得MSFT认证所需要的。通常,中低端卡片会在OpenGL支持中出现错误,缺少功能或彻底崩溃。

答案 3 :(得分:2)

使用Qt 4.5,您可以选择是否要将OpenGL用作窗口渲染器。

更多信息: http://blog.qt.digia.com/blog/2008/10/22/so-long-and-thanks-for-the-blit/

阅读评论,了解相关问题。

答案 4 :(得分:1)

显而易见的一点是,你基本上是自己构建GUI元素,而不是像wxWidgets或Qt那样设计好的。

答案 5 :(得分:1)

你不能只使用opengl,你需要一个特定于平台的代码来为opengl设置一个窗口。 从免费提供的opengl red book

  

OpenGL被设计为精简的,   与硬件无关的接口   在许多不同的硬件上实现   平台。要达到这些品质,   没有执行窗口的命令   任务或获取用户输入   包含在OpenGL中;相反,你必须   通过任何窗口系统工作   控制特定的硬件   你正在使用。

有这样的多平台解决方案,如过剩,qt,wxWidgets,......

如果你必须使用它们,为什么不使用内置的GUI元素。它们还为您提供构建自己的机会,并利用框架来处理鼠​​标/键盘事件和事物。

答案 6 :(得分:0)

如果你想在Windows /按钮等中使用GUI,请不要自己动手。有很多免费的解决方案,wxwidgets,qt或GTK。如果你想要一个3d窗口

,所有都支持OpenGL