Прокрутка фона сетки с помощью QML - PullRequest
0 голосов
/ 04 октября 2018

Я пытаюсь сделать что-то вроде игры с фоном, который прокручивается до бесконечности.Чтобы это работало, я использовал 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;
}

Но этокажется, что фон вообще не двигается ... Есть идеи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...