我正在寻找一种方法来在 qtquick 2.0 项目中呈现我的自定义 opengl 调用。给你一些背景信息:我有一个使用 opengl 进行渲染的 C++ 3d 引擎。目标是让它在 qtquick 2.0 UI 中呈现。
我发现在 qt 5.0 (qtquick 2.0) 之前,您将使用 QtGlWidget 并将其嵌入到 QDeclarativeView 中。我发现的另一种方法是使用 QtDeclarativeItem 并覆盖 void QDeclarativeItem::paint(QPainter *p, const QStyleOptionGraphicsItem *o, QWidget *w) 方法。
据我了解,这不再可能,因为 QtQuick 2.0 使用基于 OpenGl 的新渲染器。因此,它似乎不像覆盖油漆方法那么容易。
有谁知道我将如何实现允许渲染我的 opengl 调用的 QQuickItem?
最佳答案
你可以做两件事之一。通过使用 QQuickWindow::beforeRendering
Hook 将您的内容渲染为纹理或在场景图的 OpenGL 上下文中渲染或 QQuickWindow::afterRendering
信号。
可以在此处找到有关如何使用 FBO 和纹理的示例:http://doc.qt.io/qt-5/qtquick-scenegraph-textureinsgnode-example.html
可以在此处找到有关如何直接渲染到场景图的 OpenGL 上下文的示例:http://doc.qt.io/qt-5/qtquick-scenegraph-openglunderqml-example.html
关于qt - 在 qt5 的 qtquick 2.0 中渲染自定义 opengl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13608802/