在OpenGL中渲染QWidget

时间:2013-05-10 13:31:40

标签: c++ qt opengl user-interface cegui

我有一个OpenGL应用程序,我想为它添加一个GUI。

我的问题是我想继续创建窗口和主循环。事实上,我想保留我的应用程序,只需添加一些小部件来与场景进行交互......

我知道我们可以通过重载QApplication来使用OpenGL作为渲染器,但它会创建一个窗口并创建另一个我不想要的OpenGL上下文...我知道我可以使用QGLWidget将OpenGL场景渲染到它中但是它不适合我想要的......

我在很多论坛上搜索而没有找到解决方案。我想知道是否可能,如果是,那么实现这个目标的方法是什么?

如果无法做到,有没有办法做到这一点?似乎CEGUI可以做到,但在我看来它似乎有点年轻没有?

2 个答案:

答案 0 :(得分:1)

  

我的问题是我想继续创建窗口和主循环。

要使用Qt小部件系统,您必须使用QApplication及其生成的事件系统。您不能在相同的资源(窗口,用户输入,信号接收和传递)之间进行两个事件循环。

  

事实上,我想保留我的应用程序,只需添加一些小部件来与场景进行交互......

Then a beautiful Rolling Stones song applies to you: "You can't always get what you want…"

顺便说一句?你现在如何创建窗口? GLUT?然后从QGLWidget派生并覆盖其resizeGLpaintGLtimerEvent,使用0延迟计时器加倍空闲,mouse*Event方法将提供与GLUT完全相同的行为具有

您可能会发现Qt的框架和事件系统正是您所需要的。

答案 1 :(得分:0)

您是否尝试过hello-gl示例?它在OpenGL渲染和其他基本操作(调整大小,循环,视图)上有一个非常好的和干净的代码。如果您遇到GLUT问题,只需在glutInit(&argc,argv);之后添加int main()