如何使用 Horde3d 和 OpenGL 绘制 Qt 小部件?

Posted

技术标签:

【中文标题】如何使用 Horde3d 和 OpenGL 绘制 Qt 小部件?【英文标题】:How to draw Qt widgets using Horde3d and OpenGL? 【发布时间】:2012-02-18 00:03:04 【问题描述】:

我想要的是一个使用 Horde3D 显示 3d 场景并使用 Horde3D(或 OpenGL)在 3D 场景之上绘制 QWidget 的 Qt 应用程序。

基本上我想为我的 3D 场景添加 UI。并且这个 UI 应该使用 OpenGL 来绘制。

我已经成功地学习了这个教程:Accelerate your Widgets with OpenGL,还有这个Tutorial - Setup Horde with Qt4。

但是当我尝试组合它们时我可以看到我的 3D 场景,但没有 UI 控件。我将 QGraphicsView、QGraphicsScene 和 QGLWidget 与 Horde3d 一起使用。如果我不使用 Horde3D(我的意思是不要初始化它),那么我的 UI 控件会正确呈现。

我面临on Horde3D forums 所述的同样问题。

我该如何解决?

【问题讨论】:

Qt UI 消失是我在 Qt 渲染之前忘记重置 OpenGL 状态时遇到的问题。 顺便说一句,我真的应该提到performance is pretty terrible with QGraphicsProxyWidgets。很难让它们在 OpenGL 支持的场景上很好地工作,并正确处理输入。相信我,我已经试过了。 【参考方案1】:

当您使用drawBrackground()进行绘制时,使用Horde3D执行OpenGL渲染最重要的是必须保留GL状态,确保您在渲染Horde3D场景之前保存GL状态并在渲染之后恢复。

【讨论】:

以上是关于如何使用 Horde3d 和 OpenGL 绘制 Qt 小部件?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 OpenGL 保存 OpenGL 绘制?

如何使用 VBO 和单个 OpenGL drawelements 调用绘制多个对象?

如何使用 Legacy OpenGL 绘制不同颜色的线条?

如何在 OpenGL 3.2 中绘制全屏四边形?

如何使用屏幕坐标绘制 OpenGL 图元(GL_POINT、GL_LINE 等)?

如何在现代opengl中绘制圆柱体