2
在我的QML游戏中,我有一些水面上方有波浪。我需要一个想法如何动画波浪。当波浪起伏时,我只需要一些简单的动画。我试过动画SVG
与Image
和AnimatedImage
。什么都没有由于颜色限制,GIF
看起来不太好。可能是一些图形效果或精灵?任何想法将不胜感激!QML - 需要想法如何动画波
在我的QML游戏中,我有一些水面上方有波浪。我需要一个想法如何动画波浪。当波浪起伏时,我只需要一些简单的动画。我试过动画SVG
与Image
和AnimatedImage
。什么都没有由于颜色限制,GIF
看起来不太好。可能是一些图形效果或精灵?任何想法将不胜感激!QML - 需要想法如何动画波
以下代码通过使用 sine wave公式为图像创建连续波动画。
Image {
id: sourceImg
anchors.fill: parent
source: "../images/src.png"
visible: false
}
ShaderEffect {
anchors.fill: parent
property variant source: sourceImg
property real frequency: 1
property real amplitude: 0.1
property real time: 0.0
NumberAnimation on time {
from: 0; to: Math.PI*2; duration: 10000; loops: Animation.Infinite
}
fragmentShader: "
varying highp vec2 qt_TexCoord0;
uniform sampler2D source;
uniform lowp float qt_Opacity;
uniform highp float frequency;
uniform highp float amplitude;
uniform highp float time;
void main() {
highp vec2 texCoord = qt_TexCoord0;
texCoord.y = amplitude * sin(time * frequency + texCoord.x * 6.283185) + texCoord.y;
gl_FragColor = texture2D(source, texCoord) * qt_Opacity;
}"
}
谢谢@Blastings,这是接近我的目标。我只需要采用它来平铺图像,它仍然不适合我。你不觉得着色器会导致CPU过载吗? – folibis 2014-11-25 23:01:14
所以你有几个图像排列在瓷砖网格? 据我所知,QML着色器代码应该在GPU上运行,而不是在CPU上运行。 – Blastings 2014-11-26 07:58:01