summaryrefslogtreecommitdiffstats
path: root/src/quick3d/quick3drender
diff options
context:
space:
mode:
authorAntti Määttä <antti.maatta@qt.io>2017-01-30 15:24:59 +0200
committerSean Harmer <sean.harmer@kdab.com>2017-01-30 15:35:00 +0000
commit14f4677e2f8e125495d401c5ea657bf0708a417b (patch)
tree8e1fb635995263bb2324f69f8468e368190cc90e /src/quick3d/quick3drender
parente72560976ea41ddf0a9940b322692cb425caa226 (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.cpp15
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();