【问题标题】:How to render an existing OpenGL texture with Qt3D如何使用 Qt3D 渲染现有的 OpenGL 纹理
【发布时间】:2019-08-20 13:50:44
【问题描述】:

我需要使用 Qt3D 在 QtQuick 应用程序中渲染原生预渲染 OpenGL 纹理。

我使用 cuda 将场景实时渲染到绑定到帧缓冲区的纹理。然后我想在 qml 场景中显示渲染的纹理。

看来,我必须以某种方式干预渲染过程并在我的纹理 GLuint 上调用 glBindTexture()。

当然有一个解决方法,我可以将纹理从视频内存加载到某个缓冲区,然后创建 QTexture2D 并使用 QTextureImageDataGenerator 提供数据。但这似乎效率很低。

所以问题是如何在 Qt3D 渲染管道中绑定现有纹理。

【问题讨论】:

  • 到目前为止您尝试过什么?你的问题不清楚..
  • 现在我尝试使用 QQuickFramebufferObject

标签: c++ opengl video render-to-texture qt3d


【解决方案1】:

如果我理解正确,您想使用 Qt3D 在纹理上显示视频。

您的资料中有一个示例,正是这样做的:

<QT_PATH>\5.13.0\Src-Qt5.13.0\qt3d\tests\manual\video-texture-qml

您所说的视频内存是来自保存的视频还是实时数据?你能详细说明那部分吗?(答案:使用 cuda 实时到帧缓冲区)

编辑: 看看qsharedgltexture 他们在 Qt13.0 的 Qt 3D 场景中添加了对使用来自单独 OpenGL 上下文的 textureId 的支持。我自己还没用过。

【讨论】:

  • 这不是视频。实际上,我使用 cuda 将场景实时渲染到绑定到帧缓冲区的纹理。然后我想在 qml 场景中显示渲染的纹理。
猜你喜欢
  • 2020-12-20
  • 1970-01-01
  • 2013-12-27
  • 1970-01-01
  • 2014-08-09
  • 2023-03-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多