• Sean Harmer's avatar
    Add a way of transforming texture coordinates of a simple textured quad · 5c722557
    Sean Harmer authored
    
    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: default avatarGunnar Sletta <gunnar.sletta@digia.com>
    5c722557