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