QOpenGLContext: expose the shared global context

We're documenting that this context exists, therefore applications
are allowed to assume that it exists. For the same reason, we
should expose it as public API -- an application should be allowed
to upload GL objects before creating or showing QOpenGLWidgets
that use them.

Change-Id: Iedbba7cd393018d93833fd2a6b02cce0639a89b4
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
bb10
Giuseppe D'Angelo 2015-02-12 16:46:55 +01:00
parent fe64b12edc
commit 5b460080fb
2 changed files with 26 additions and 0 deletions

View File

@ -1204,6 +1204,31 @@ bool QOpenGLContext::supportsThreadedOpenGL()
return QGuiApplicationPrivate::instance()->platformIntegration()->hasCapability(QPlatformIntegration::ThreadedOpenGL);
}
/*!
\since 5.5
Returns the application-wide shared OpenGL context, if present.
Otherwise, returns a null pointer.
This is useful if you need to upload OpenGL objects (buffers, textures,
etc.) before creating or showing a QOpenGLWidget or QQuickWidget.
\note You must set the Qt::AA_ShareOpenGLContexts flag on QGuiApplication
before creating the QGuiApplication object, otherwise Qt may not create a
global shared context.
\warning Do not attempt to make the context returned by this function
current on any surface. Instead, you can create a new context which shares
with the global one, and then make the new context current.
\sa Qt::AA_ShareOpenGLContexts, setShareContext(), makeCurrent()
*/
QOpenGLContext *QOpenGLContext::globalShareContext()
{
Q_ASSERT(qGuiApp);
return qt_gl_global_share_context();
}
/*!
\internal
*/

View File

@ -199,6 +199,7 @@ public:
bool isOpenGLES() const;
static bool supportsThreadedOpenGL();
static QOpenGLContext *globalShareContext();
Q_SIGNALS:
void aboutToBeDestroyed();