diff options
author | Antti Määttä <antti.maatta@qt.io> | 2017-01-30 15:24:59 +0200 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2017-01-30 15:35:00 +0000 |
commit | 14f4677e2f8e125495d401c5ea657bf0708a417b (patch) | |
tree | 8e1fb635995263bb2324f69f8468e368190cc90e /src/quick3d/quick3drender | |
parent | e72560976ea41ddf0a9940b322692cb425caa226 (diff) |
Fix texture binding on macos
It seems that the format of the context being shared must be the same, otherwise
sharing doesn't work. Also fix crash at the startup, which happens because
the m_shareContext is not initialized.
Change-Id: Ie654b684bcead1d85dee239dba02be798672f278
Reviewed-by: Mike Krus <mike.krus@kdab.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/quick3d/quick3drender')
-rw-r--r-- | src/quick3d/quick3drender/scene2d/scene2d.cpp | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/quick3d/quick3drender/scene2d/scene2d.cpp b/src/quick3d/quick3drender/scene2d/scene2d.cpp index 4e92739a4..710284be2 100644 --- a/src/quick3d/quick3drender/scene2d/scene2d.cpp +++ b/src/quick3d/quick3drender/scene2d/scene2d.cpp @@ -163,7 +163,6 @@ void Scene2D::initializeFromPeer(const Qt3DCore::QNodeCreatedChangeBasePtr &chan m_renderPolicy = data.renderPolicy; setSharedObject(data.sharedObject); setOutput(data.output); - m_shareContext = renderer()->shareContext(); } void Scene2D::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e) @@ -195,13 +194,21 @@ void Scene2D::setSharedObject(Qt3DRender::Quick::Scene2DSharedObjectPtr sharedOb void Scene2D::initializeRender() { if (!m_renderInitialized && m_sharedObject.data() != nullptr) { - + m_shareContext = renderer()->shareContext(); + if (!m_shareContext){ + qCWarning(Qt3DRender::Quick::Scene2D) << Q_FUNC_INFO << "Renderer not initialized."; + QCoreApplication::postEvent(m_sharedObject->m_renderObject, new QEvent(INITIALIZE)); + return; + } + m_context = new QOpenGLContext(); +#ifdef Q_OS_MACOS + m_context->setFormat(m_shareContext->format()); +#else QSurfaceFormat format; format.setDepthBufferSize(24); format.setStencilBufferSize(8); - - m_context = new QOpenGLContext(); m_context->setFormat(format); +#endif m_context->setShareContext(m_shareContext); m_context->create(); |