• Sean Harmer's avatar
    OpenGL: Use official glext.h and gl2ext.h headers · fc41ee4c
    Sean Harmer authored
    The Khronos group makes the glext.h (Desktop OpenGL) and gl2ext.h
    (OpenGL ES2) headers officially available nowadays. Most (all?)
    Linux systems ship this by default. On Windows platforms the
    glext.h file needs to be downloaded from
    
    http://www.opengl.org/registry/api/glext.h
    
    and placed alongside the system OpenGL header.
    
    Making use of the official header reduces the maintenance
    overhead for OpenGL support in Qt by removing the need to copy
    and paste definitions into the Qt sources.
    
    As the Khronos-provided headers are standardised and backwards and
    forwards compatible we can utilise these for all platforms rather
    than just for Windows. This means that all definitions required
    by Qt will be present even if the system ships out-dated
    equivalents.
    
    Mac OS X needs special handling in that we should always use the
    system-provided headers there. This is because Apple controls the
    OpenGL driver and the headers that go along with it. As such there
    is no possibility that the driver exposes additional functionality
    compared with the system-provided OpenGL headers. Apple has also
    decided to make different decisions about some OpenGL typedefs
    compared to other implementations. For example, Apple typdefs
    GLhandleARB to void* whereas other platforms use unsigned int.
    
    The alternative, which is to use the system provided glext.h (or
    gl2ext.h) header means that Qt code would need to check for the
    availability of such definitions wherever it is not guaranteed
    to be provided by core OpenGL/ES just to compile.
    
    The proposed approach means that Qt can compile regardless of
    the system's OpenGL extension support. We just need to be
    rigourous in runtime checking of support for extensions but
    that is already a requirement (and is missing in a few places,
    see TODO's added in this commit).
    
    The official Khronos headers are added to Qt as
    
    qopenglext.h - Desktop OpenGL
    qopengles2ext.h - OpenGL ES2
    
    They need to be public but not part of QtGui module include, hence
    the headers have been modified by adding
    
     #if 0
     #pragma qt_no_master_include
     #endif
    
    to them.
    
    This has been tested on:
    
    Gentoo Linux with GCC 4.6.3
    Windows 7 with MSVC 2010
    Mac OSX 10.8 with Apple clang 4.0 (based on LLVM 3.1svn)
    QNX with qcc (based on GCC 4.4)
    
    A small change is needed to QtDeclarative when building for OpenGL
    ES 2 after applying this commit. See
    https://codereview.qt-project.org/#change,31794
    
    
    
    Change-Id: I4b3d2b1680baf4c78be9a87b4d8de076d23e8f82
    Reviewed-by: default avatarGunnar Sletta <gunnar.sletta@nokia.com>
    Reviewed-by: default avatarLars Knoll <lars.knoll@nokia.com>
    fc41ee4c
changes-5.11.0 943 bytes
Qt 5.11 introduces many new features and improvements as well as bugfixes
over the 5.10.x series. For more details, refer to the online documentation
included in this distribution. The documentation is also available online:
http://doc.qt.io/qt-5/index.html
The Qt version 5.11 series is binary compatible with the 5.10.x series.
Applications compiled for 5.10 will continue to run with 5.11.
Some of the changes listed in this file include issue tracking numbers
corresponding to tasks in the Qt Bug Tracker:
https://bugreports.qt.io/
Each of these identifiers can be entered in the bug tracker to obtain more
information about a particular change.
****************************************************************************
*                            Qt 5.11.0 Changes                             *
****************************************************************************
 - This release contains only minor code improvements.