Я пытаюсь сделать что-то вроде игры с фоном, который прокручивается до бесконечности.Чтобы это работало, я использовал Rectangle и слой.Слой используется для цвета фона.Слой используется для рисования линии поверх прямоугольника.Я добавляю вид смещения, чтобы изменить положение фона, но без какого-либо эффекта ...
import QtQuick 2.0
Item {
id: root;
property color colorBackground: Qt.rgba(0.9, 0.9, 0.9, 1.0);
property color colorStroke: Qt.rgba(0.1, 0.1, 0.1, 1.0);
property real mapPosition: 0.0;
layer.enabled: true;
layer.effect: ShaderEffect {
property color colorStroke: root.colorStroke;
property real widthRectangle: rectangle.width;
property real heightRectangle: rectangle.height;
property real cellSize: rectangle.width / 5;
property real mapPosition: root.mapPosition;
fragmentShader: "
uniform lowp sampler2D source; // this item
uniform highp vec4 colorStroke;
uniform highp float widthRectangle;
uniform highp float heightRectangle;
uniform highp float cellSize;
uniform highp float mapPosition;
varying highp vec2 qt_TexCoord0;
void main() {
lowp vec4 p = texture2D(source, qt_TexCoord0);
gl_FragColor = p;
float x = qt_TexCoord0.x * widthRectangle;
float y = qt_TexCoord0.y * heightRectangle + mapPosition;
if(mod(x, cellSize) <= 1.0)
gl_FragColor = colorStroke;
if(mod(y, cellSize) <= 1.0)
gl_FragColor = colorStroke;
}";
}
Rectangle {
id: rectangle;
color: root.colorBackground;
anchors.fill: parent;
}
}
Чтобы изменить положение, я использую это:
import "GameLogic.js" as GameLogic
Background {
anchors.fill: parent;
mapPosition: GameLogic.mapPosition;
}
Но этокажется, что фон вообще не двигается ... Есть идеи?