DtkDeclarative
DTK Declarative module
|
用于获取窗口中已渲染的背景结果,可以将此结果用于特效加工类的控件,如用于实现高斯模糊效果。 更多...
用于获取窗口中已渲染的背景结果,可以将此结果用于特效加工类的控件,如用于实现高斯模糊效果。
BackdropBlitter 可以将自身所在区域的背后内容捕获到一个单独的 QSGTexture 中,在 RHI 后端是 QRhiTexture,在 software 后端是 QImage。此捕获动作是在每一帧渲染中实时进行,按 BackdropBlitter 对象所在的层叠顺序进行捕获,多个 BackdropBlitter 可叠加使用,它们相互之间没有影响。
BackdropBlitter 底层基于 QSGRenderNode 实现,通过在 QSGRenderNode::render 中调用 glBlitFramebuffer 捕获内容,因此其当前不支持非 QRhi::OpenGLES2 的渲染后端。此外,由于 QtQuick和 QtRHI 渲染系统的设计限制,无法在 QSGRenderNode::render 阶段再 QSGNode 所使用的 QRhiTexture 资源,因此,对于需要使用 BackdropBlitter 捕获的内容的对象(如 MultiEffect),需要将其作为 BackdropBlitter 的子对象使用。
BackdropBlitter 会自动创建一个新的 QRhi 对象,并且将自身的子对象在当前的 QRhi 所渲染的图形数中隐藏,在 QSGRenderNode::render 中使用自己新建的 QRhi 对象将自身的子对象渲染到窗口中。基于此方式,BackdropBlitter 可实现在 QSGRenderNode::render 中准备好其子对象所使用的 QRhiTexture 资源,在此资源更新后,再使用新的 QRhi 对象渲染子对象,以模拟需要在渲染过程中动态更新 QRhiTexture 的功能。
支持为 BackdropBlitter 应用 clip opacity rotaion transform scale 等属性。