【发布时间】: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() 对于视频来说太慢了