我有一个OpenGL应用程序,我想为它添加一个GUI。
我的问题是我想继续创建窗口和主循环。事实上,我想保留我的应用程序,只需添加一些小部件来与场景进行交互......
我知道我们可以通过重载QApplication来使用OpenGL作为渲染器,但它会创建一个窗口并创建另一个我不想要的OpenGL上下文...我知道我可以使用QGLWidget将OpenGL场景渲染到它中但是它不适合我想要的......
我在很多论坛上搜索而没有找到解决方案。我想知道是否可能,如果是,那么实现这个目标的方法是什么?
如果无法做到,有没有办法做到这一点?似乎CEGUI可以做到,但在我看来它似乎有点年轻没有?
答案 0 :(得分:1)
我的问题是我想继续创建窗口和主循环。
要使用Qt小部件系统,您必须使用QApplication及其生成的事件系统。您不能在相同的资源(窗口,用户输入,信号接收和传递)之间进行两个事件循环。
事实上,我想保留我的应用程序,只需添加一些小部件来与场景进行交互......
Then a beautiful Rolling Stones song applies to you: "You can't always get what you want…"
顺便说一句?你现在如何创建窗口? GLUT?然后从QGLWidget派生并覆盖其resizeGL
,paintGL
和timerEvent
,使用0延迟计时器加倍空闲,mouse*Event
方法将提供与GLUT完全相同的行为具有
您可能会发现Qt的框架和事件系统正是您所需要的。
答案 1 :(得分:0)
您是否尝试过hello-gl
示例?它在OpenGL渲染和其他基本操作(调整大小,循环,视图)上有一个非常好的和干净的代码。如果您遇到GLUT问题,只需在glutInit(&argc,argv);
之后添加int main()
。