diff options
author | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2018-06-19 13:16:40 +0200 |
---|---|---|
committer | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2018-06-19 13:16:40 +0200 |
commit | 06879a5cfca3bca23e8cdc22be48563a77fd15d9 (patch) | |
tree | f47d3e24a419a98fc1e36004a7161bc17cc69003 /src | |
parent | bc544df60c1bf23df63df6ab8a017c7861319930 (diff) | |
parent | 3b4a9b50618210c08dc08ae0e2dcf3b8d495eccf (diff) |
Merge remote-tracking branch 'origin/5.11.1' into 5.11
Change-Id: Icf260d41f2b7fdf68023b9868ebf95bc89a4393d
Diffstat (limited to 'src')
-rw-r--r-- | src/render/backend/uniform_p.h | 2 | ||||
-rw-r--r-- | src/render/frontend/qrenderaspect.cpp | 5 | ||||
-rw-r--r-- | src/render/renderers/opengl/textures/gltexture.cpp | 9 | ||||
-rw-r--r-- | src/render/texture/qpaintedtextureimage.cpp | 8 | ||||
-rw-r--r-- | src/render/texture/qpaintedtextureimage_p.h | 1 |
5 files changed, 21 insertions, 4 deletions
diff --git a/src/render/backend/uniform_p.h b/src/render/backend/uniform_p.h index e31aaa609..7f273566e 100644 --- a/src/render/backend/uniform_p.h +++ b/src/render/backend/uniform_p.h @@ -181,7 +181,7 @@ public: // For nodes which will later be replaced by a Texture or Buffer UniformValue(Qt3DCore::QNodeId id) - : UniformValue() + : m_data(sizeof(Qt3DCore::QNodeId) / sizeof(float)) { m_valueType = NodeId; memcpy(m_data.data(), &id, sizeof(Qt3DCore::QNodeId)); diff --git a/src/render/frontend/qrenderaspect.cpp b/src/render/frontend/qrenderaspect.cpp index 04ddfdd46..3590dd44e 100644 --- a/src/render/frontend/qrenderaspect.cpp +++ b/src/render/frontend/qrenderaspect.cpp @@ -249,7 +249,7 @@ void QRenderAspectPrivate::registerBackendTypes() q->registerBackendType<QGeometry>(QSharedPointer<Render::NodeFunctor<Render::Geometry, Render::GeometryManager> >::create(m_renderer)); q->registerBackendType<QGeometryRenderer>(QSharedPointer<Render::GeometryRendererFunctor>::create(m_renderer, m_nodeManagers->geometryRendererManager())); q->registerBackendType<Qt3DCore::QArmature>(QSharedPointer<Render::NodeFunctor<Render::Armature, Render::ArmatureManager>>::create(m_renderer)); - q->registerBackendType<Qt3DCore::QSkeletonLoader>(QSharedPointer<Render::SkeletonFunctor>::create(m_renderer, m_nodeManagers->skeletonManager(), m_nodeManagers->jointManager())); + q->registerBackendType<Qt3DCore::QAbstractSkeleton>(QSharedPointer<Render::SkeletonFunctor>::create(m_renderer, m_nodeManagers->skeletonManager(), m_nodeManagers->jointManager())); q->registerBackendType<Qt3DCore::QJoint>(QSharedPointer<Render::JointFunctor>::create(m_renderer, m_nodeManagers->jointManager(), m_nodeManagers->skeletonManager())); // Textures @@ -324,6 +324,9 @@ void QRenderAspectPrivate::unregisterBackendTypes() unregisterBackendType<QComputeCommand>(); unregisterBackendType<QGeometry>(); unregisterBackendType<QGeometryRenderer>(); + unregisterBackendType<Qt3DCore::QArmature>(); + unregisterBackendType<Qt3DCore::QAbstractSkeleton>(); + unregisterBackendType<Qt3DCore::QJoint>(); // Textures unregisterBackendType<QAbstractTexture>(); diff --git a/src/render/renderers/opengl/textures/gltexture.cpp b/src/render/renderers/opengl/textures/gltexture.cpp index 4286a69b6..63b354a14 100644 --- a/src/render/renderers/opengl/textures/gltexture.cpp +++ b/src/render/renderers/opengl/textures/gltexture.cpp @@ -151,8 +151,15 @@ QOpenGLTexture* GLTexture::getOrCreateGLTexture() int maxMipLevel = 0; for (const Image &img : qAsConst(m_images)) { const QTextureImageDataPtr imgData = m_textureImageDataManager->getData(img.generator); + // imgData may be null in the following cases: + // - Texture is created with TextureImages which have yet to be + // loaded (skybox where you don't yet know the path, source set by + // a property binding, queued connection ...) + // - TextureImage whose generator failed to return a valid data + // (invalid url, error opening file...) + if (imgData.isNull()) + continue; - Q_ASSERT(imgData); m_imageData.push_back(imgData); maxMipLevel = qMax(maxMipLevel, img.mipLevel); diff --git a/src/render/texture/qpaintedtextureimage.cpp b/src/render/texture/qpaintedtextureimage.cpp index 8d2dd1436..6e220f340 100644 --- a/src/render/texture/qpaintedtextureimage.cpp +++ b/src/render/texture/qpaintedtextureimage.cpp @@ -69,6 +69,7 @@ namespace Qt3DRender { QPaintedTextureImagePrivate::QPaintedTextureImagePrivate() : m_imageSize(256,256) + , m_devicePixelRatio(1.0) , m_generation(0) { } @@ -80,8 +81,13 @@ QPaintedTextureImagePrivate::~QPaintedTextureImagePrivate() void QPaintedTextureImagePrivate::repaint() { // create or re-allocate QImage with current size - if (m_image.isNull() || (m_image->size() != m_imageSize)) + if (m_image.isNull() + || m_image->size() != m_imageSize + || m_image->devicePixelRatio() != m_devicePixelRatio) + { m_image.reset(new QImage(m_imageSize, QImage::Format_RGBA8888)); + m_image->setDevicePixelRatio(m_devicePixelRatio); + } QPainter painter(m_image.data()); q_func()->paint(&painter); diff --git a/src/render/texture/qpaintedtextureimage_p.h b/src/render/texture/qpaintedtextureimage_p.h index 93705d96e..4e554f1c1 100644 --- a/src/render/texture/qpaintedtextureimage_p.h +++ b/src/render/texture/qpaintedtextureimage_p.h @@ -72,6 +72,7 @@ public: Q_DECLARE_PUBLIC(QPaintedTextureImage) QSize m_imageSize; + qreal m_devicePixelRatio; QScopedPointer<QImage> m_image; QTextureImageDataGeneratorPtr m_currentGenerator; |