【发布时间】:2014-02-11 13:43:31
【问题描述】:
我有一些使用 Qt 4 的代码。我想将它迁移到 Qt 5 并切换到 QOpenGL 的东西。我无法理解来自void paintGL() 和void initializeGL() 的代码需要放在QWindow 中的什么位置。谁能帮我举个例子?
【问题讨论】:
我有一些使用 Qt 4 的代码。我想将它迁移到 Qt 5 并切换到 QOpenGL 的东西。我无法理解来自void paintGL() 和void initializeGL() 的代码需要放在QWindow 中的什么位置。谁能帮我举个例子?
【问题讨论】:
我创建了一个将 QWindow 与 OpenGL 结合使用的简单示例。
为了简化 OpenGL 开发,我创建了一个抽象类 GLWindow,其中包含虚函数 initializeGL()、paintGL() 和 resizeGL(int w, int h)。我相信源代码显示了旧样式和新样式之间的关系。
示例可在此处获得:
https://github.com/mortennobel/QtOpenGLChapter/tree/master/OpenGL3xAlt
【讨论】:
Qt 有at least one example (Overpainting) 可以将小部件放在 OpenGL 场景上。通过观察,似乎最简单的方法是从 QGLWidget 继承而不是 QWidget 并覆盖适当的虚函数以进行初始化和绘制。
【讨论】:
在 qtbase/examples/opengl 中使用 QWindow 和 OpenGL 的标准示例是 hellowindow。
initializeGL 和paintGL 没有直接的替代品。相反,您可以这样做:
【讨论】: