混合OpenGL和软件渲染GUI

时间:2015-11-12 15:33:39

标签: user-interface opengl

我需要编写应用程序,其中主要内容将是OpenGL呈现(类似于游戏引擎),但是没有好的基于OpenGL的GUI库类似于Qt小部件所做的(但它们是软件呈现的)。

当我浏览Qt的源代码时,所有绘画都是通过QPainter完成的,在OpenGL中甚至有QPainter实现,但是在Qt 5中删除了多个图形后端的支持,因此你无法渲染Qt Widgets在OpenGL中(我不知道为什么)。

问题是您无法使用软件和硬件渲染绘制到窗口表面。您可以将窗口与OpenGL上下文关联或使用软件渲染。这意味着如果我想要具有基于OpenGL的内容的复杂GUI的应用程序,我需要使用OpenGL绘制所有内容(这很难,因为正如我所说,没有好的GUI库),或者我可以使用GUI渲染GUI软件渲染(例如Qt)并将该图像加载为OpenGL纹理(可能是性能损失很大)。

有没有人知道任何使用软件渲染GUI作为纹理加载到OpenGL的好应用程序?我需要确保它能够在没有大的性能损失的情况下工作,但是找不到好的例子,即使对于像游戏引擎这样的应用程序也能正常工作。

1 个答案:

答案 0 :(得分:-1)

如果你采用"渲染ui纹理然后在我的游戏中绘制纹理四边形"路线,并担心表演,尽量避免每帧转移整个纹理。

如果你想一想:

ui不需要60fps:30fps就足够了,所以两次更新一次。

大多数情况下,ui不会在帧之间进行更改,如果更改,只会有一小部分更改。

ui框架经常跟踪ui的哪个部分"脏"并需要重新绘制。如果你可以得到它,你可以只传输纹理需要更新的部分(glTexSubImage2D)。