Add a way of transforming texture coordinates of a simple textured quad
This commit introduces the enum TextureCoordinatesTransformFlag and
corresponding QFlags OR combination TextureCoordinatesTransformMode.
This enum is used to control the orientation of texture coordinates
relative to window/item coordinates.
The common use case addressed by this commit is when rendering to a
texture via an FBO using some 3rd party OpenGL library. Some libraries
do not offer a way to orient the rendered output which results in the
texture being displayed upside down when used in conjunction with
QSGSimpleTextureNode.
There are a number of possible solutions to this:
1 Mirror the item by scaling by -1 in the y-direction in QML document
2 Use a custom material (shader) that transforms texture coordinates
in GLSL
3 Generate texture coordinates differently
This commit opts for approach 3. Approach 1 is ugly and visible to the
end user and also causes more work when other transformations interact
with the necessary scaling. Approach 2 has a performance cost in both
switching material (shader) and also in additional per-vertex or per-
fragment operations. The chosen approach hides it from the end user
and has zero runtime cost delta compared to any other textured quad.
Change-Id: I95870da50a09d113aeff2681bfd458669ec7a5a4
Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>