Qt QML聚焦效果

时间:2016-11-09 20:58:46

标签: qt qml

是否有可能以某种方式使用QtGraphicalEffects获得多个聚光灯?

透明渐变下方的方格部分是任何QML Item类型的占位符。因此,最终结果可能是一个完整的场景,动画项目在效果下面运行。

我只能提出一个使用Image类型的解决方案,其中4个Rectangle类型锚定到父容器和Image - 但是这种方法我任何时候场景中只能有一个聚光灯叠加

Spotlight effect

我喜欢它,所以我可以在一个场景中混合使用多个聚光灯: enter image description here

1 个答案:

答案 0 :(得分:0)

我个人使用带有简单着色器的ShaderEffect,当距离中心的距离增加时,输出会使输出变暗。这比使用纹理便宜,因为它不需要纹理。如果您想要多个聚光灯,只需创建着色器效果的多个实例。您可以对衰减进行参数化和设置动画,并为闪烁效果等内容添加颜色或可变强度等内容。

您必须将场景项渲染到纹理,您只需使用ShaderEffectSource。然后你实际上需要隐藏场景,以显示它背后的黑色背景。然后,您必须将该纹理传递给每个着色器,这将“显示”靠近聚光灯中心的像素。如果您不想要完全黑色,可以使用不透明度来调整场景,但不能直接在场景项上,而是在父容器项上,以使纹理源完全不透明。