2018-09-05 14:08 GMT+02:00 Tomasz Olszak <olszak.tom...@gmail.com>: > Hi, I want to animate (change flickable contentX and contentY) image > position in screen. Image is bigger(4000x3000) than screen. Currently, I > implemented it on I7 ivybridge on Kubuntu 18.04. > It simply stutters few times a second. If anyone has integrated Intel GPU > - could I kindly ask to check if it also stutter for him? Is it a GPU limit > to handle such big texture or perhaps I can tweak something to make it > fluent: > > Instead of flickable i'd use GridView (which uses flickable). Only the items actually on screen will be instantiated, so it scales much better.
If your real case is an image and your GPU supports texture sizes as big as your image size then maybe something like this could be faster (let a shader to the zooming/cropping): import QtQuick 2.9 import QtQuick.Window 2.2 Window { visible: true width: 640 height: 480 Image { id: img source: "http://www.letsgodigital.org/images/producten/1515/testrapport/underwater-photos.jpg" visible: false } Flickable { anchors.fill: parent id: flicker contentWidth: dummyFlickItem.width contentHeight: dummyFlickItem.height Item { id: dummyFlickItem width: img.sourceSize.width height: img.sourceSize.height } } ShaderEffect { anchors.fill: flicker property variant src: img property real xPosition: flicker.visibleArea.xPosition property real yPosition: flicker.visibleArea.yPosition property real widthRatio: flicker.visibleArea.widthRatio property real heightRatio: flicker.visibleArea.heightRatio vertexShader: " uniform highp mat4 qt_Matrix; attribute highp vec4 qt_Vertex; attribute highp vec2 qt_MultiTexCoord0; uniform highp float xPosition; uniform highp float yPosition; uniform highp float widthRatio; uniform highp float heightRatio; varying highp vec2 coord; void main() { coord.x = xPosition + widthRatio*qt_MultiTexCoord0.x; coord.y = yPosition + heightRatio*qt_MultiTexCoord0.y; gl_Position = qt_Matrix * qt_Vertex; }" fragmentShader: " varying highp vec2 coord; uniform sampler2D src; uniform lowp float qt_Opacity; void main() { gl_FragColor = texture2D(src, coord); }" } }
_______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest