qt - 在 qt5 的 qtquick 2.0 中渲染自定义 opengl

标签 qt opengl qt-quick qt5

我正在寻找一种方法来在 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/

相关文章:

c++ - Qt 程序在另一台计算机上执行时崩溃

c# - 具有单个上下文的 OpenTK 多个 GLControl

javascript - 在运行时动态创建和存储算法

qt - 如何从 C++ 对 Qt Quick TextEdit 对象运行命令?

c++ - 无法使用 CMake 导入 QML 模块

c++ - 如何从 qmake 定义类型?预包含头文件?

c++ - BMP 的完整屏幕截图。 bliting 和保存的问题

qt - QML 是否支持属性的私有(private)访问说明符?

使用样式表时的 QTabWidget tabPosition

opengl - glXGetProcAddress 为以 "gl"开头的任何 procName 返回非空值