我正在尝试在背景上复制带有Alpha通道的视频。不幸的是,当我播放视频时,显示了一个黑色的窗口。我认为这取决于Qt在Windows上使用的后端。
因此,我尝试应用合并两个视频的着色器效果,并使用其中一个作为另一个的遮罩。
这是我的QML代码:
Rectangle{
width:462
height: 347
color: "transparent"
Video {
id: button
source: "file:/F:/BlackBuffalo/gioco/symwin_0.mp4"
anchors.fill: parent
loops:MediaPlayer.Infinite
layer.enabled: true
layer.smooth: true
autoPlay: true
opacity: 0.0
}
Video {
id: _mask
source: "file:/F:/BlackBuffalo/gioco/symwin_0_mask.mp4"
anchors.fill: parent
loops:MediaPlayer.Infinite
autoPlay: true
}
layer.enabled: true
layer.samplerName: "maskSource"
layer.effect: ShaderEffect {
property variant source: button
fragmentShader: "
varying highp vec2 qt_TexCoord0;
uniform highp float qt_Opacity;
uniform lowp sampler2D source;
uniform lowp sampler2D maskSource;
void main(void) {
gl_FragColor = texture2D(source, qt_TexCoord0) * (texture2D(maskSource, qt_TexCoord0).r) * qt_Opacity;
}
"
}
}
视频现在具有Alpha,但是颜色不符合预期,而且两个视频未完全同步,因此有时可以看到蒙版。
我做错了什么?