summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2018-06-19 13:16:40 +0200
committerQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2018-06-19 13:16:40 +0200
commit06879a5cfca3bca23e8cdc22be48563a77fd15d9 (patch)
treef47d3e24a419a98fc1e36004a7161bc17cc69003 /src
parentbc544df60c1bf23df63df6ab8a017c7861319930 (diff)
parent3b4a9b50618210c08dc08ae0e2dcf3b8d495eccf (diff)
Merge remote-tracking branch 'origin/5.11.1' into 5.11
Diffstat (limited to 'src')
-rw-r--r--src/render/backend/uniform_p.h2
-rw-r--r--src/render/frontend/qrenderaspect.cpp5
-rw-r--r--src/render/renderers/opengl/textures/gltexture.cpp9
-rw-r--r--src/render/texture/qpaintedtextureimage.cpp8
-rw-r--r--src/render/texture/qpaintedtextureimage_p.h1
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;