【问题标题】:Render a QML scene into a texture and save it将 QML 场景渲染为纹理并保存
【发布时间】:2013-06-09 08:38:24
【问题描述】:

如何将 QML 场景(如矩形、图像等)转换为纹理并保存? 以前有人试过吗?如果我可以将组件转换为纹理,那么我应该可以保存 粒子系统或shaderEffects处理后的图像

例子:

Rectangle{
  id:root

  widht:640
  height: 480

  ToTexture{ id: toTexture} //a new type created by c++

  MouseArea{

     anchors.fill: parent

     onClicked: {         
         toTexture.saveAsTexture(root)
     }
  }
}

问题是,如何设计像 ToTexture 这样的新类型? “场景图 - QML 下的 OpenGL”示例。告诉我们如何 渲染一个 qml 场景,但我找不到一个例子告诉我们如何 将 qml 场景传输到纹理。

没有这个功能,我无法保存QtQuick生成的图形

【问题讨论】:

  • “QML 场景”是指整个 QML 场景吗?在 QtQuick2 中,使用 QQuickWindow::setRenderTarget 是微不足道的,我几乎猜想在 QQ1 中通过 QDeclarativeView::render 到 QImage 上是一样的......
  • 准确来说,我想做shaderEffectSource做的事情,将Rectangle、Image等组件渲染到纹理中并获取这些纹理的指针,通过QImage保存纹理。
  • 有什么例子吗?我在 QML 下找到了一个叫 OpenGL 的,告诉我们如何渲染 qml 场景,但是没有例子告诉我们如何将 qml 场景转换为纹理并保存。在 QtQuick2 中,我们甚至不能简单地将图像传输到QImage 并像 QQ1 一样保存它。
  • 谢谢ddriver,你现在知道如何提取可见qml组件的原始帧缓冲数据了吗?我想将场景录制为视频,但找不到方法,grabWindow() 对于视频来说太慢了

标签: c++ qt qml


【解决方案1】:

我在这篇文章中找到了另一个解决方案

take screenshot

我们可以截取 qml 场景的截图,然后我们可以对它做任何事情,包括渲染到纹理

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-20
    • 2015-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多