在OpenGL中渲染QWidget
Render QWidget in OpenGL
我有一个OpenGL应用程序,我想给它添加一个GUI。
我的问题是我想保持我创建窗口和主循环的方式。事实上,我想保留我的应用程序,只是添加一些小部件来与场景交互…
我知道我们可以通过重载QApplication来使用OpenGL作为渲染器,但它会创建一个窗口并创建另一个我不想要的OpenGL上下文…我知道我可以使用QGLWidget来渲染OpenGL场景,但它不适合我想要的太…
我搜索了很多论坛没有找到解决方案。我想知道这是否可能,如果是,如何实现这一目标?
如果不可能,还有办法吗?CEGUI似乎可以做到这一点,但在我看来,它似乎有点年轻,不是吗?
我的问题是我想保持我创建窗口和主循环的方式。
要使用Qt小部件系统,必须使用QApplication和它生成的事件系统。你不能让两个事件循环在相同的资源(窗口,用户输入,信号接收和发送)之间竞争。
事实上,我想保留我的应用程序,只是添加一些小部件来与场景交互…
然后滚石乐队的一首美丽的歌适用于你:"你不能总是得到你想要的…"
顺便说一句吗?您现在是如何创建窗口的?过剩?然后从QGLWidget派生并覆盖它的resizeGL
, paintGL
和timerEvent
与一个0延迟定时器作为空闲和mouse*Event
方法将给你完全相同的行为与GLUT。
你可能会发现Qt的框架和事件系统正是你需要的。
你试过hello-gl
的例子吗?它对OpenGL渲染和其他基本操作(调整大小,循环,视图)有一个非常好的和干净的代码。如果您有GLUT的问题,只需在int main()
之后添加glutInit(&argc,argv);
。
相关文章:
- OpenGL - 在抛出"__gnu_cxx::recursive_init_error"实例后终止调用?
- 了解 GLM- openGL 中的相机转换
- 如何在全屏模式下(在OpenGL中)使背景透明
- 为什么我不能使用 EGL 创建无头 OpenGl 上下文?
- OpenGL大的3D纹理(>2GB)非常慢
- OpenGl glm rotate
- C++atioglxx.pdb未加载错误glBufferData OpenGL
- OpenGL在启用深度测试时不会丢弃我的碎片
- OpenGL相机和相机空间转型的困惑
- OpenGL将纹理四边形渲染为(0,0)
- OpenGL 和 GLM 矩阵无法正确扩展,总是按比例缩小
- 发布旋转矩阵(openGL/glm)
- 如何在QT Creator上将QWidget声明为继承类的对象
- 如何在Visual Basic中使用矩形函数OpenGL绘制矩形
- 无法使用VAO和EBO(openGL)绘制多个对象
- 为什么我的点没有在 OpenGL 中绘制鼠标所在的位置?
- 如何使用OpenGL渲染到一个QMainWindow的两个QWidget?
- 如何在 Qwidget 的中心设计一个三角形(在 QT 中使用 OpenGl)
- 无法在 Qwidget 中显示 OpenGL
- 在OpenGL中渲染QWidget