summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLaszlo Agocs <laszlo.agocs@qt.io>2018-06-26 15:48:19 +0200
committerLaszlo Agocs <laszlo.agocs@qt.io>2018-06-27 07:35:38 +0000
commitec3fc2d48c3270f2dd63d10ad2202b10403b26ef (patch)
treec41ad523e464872f108953aeca2e95f4b93f333e
parent979570f4e421a4f4aab2f39e32b7bed629a89531 (diff)
Fix QTextureImageData data access with individual TextureImages
Task-number: QTBUG-69138 Change-Id: I0d980db0873af4f64dddc356d6d3ec4bc4c81857 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
-rw-r--r--src/render/renderers/opengl/textures/gltexture.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/render/renderers/opengl/textures/gltexture.cpp b/src/render/renderers/opengl/textures/gltexture.cpp
index 63b354a14..3d8664e78 100644
--- a/src/render/renderers/opengl/textures/gltexture.cpp
+++ b/src/render/renderers/opengl/textures/gltexture.cpp
@@ -51,6 +51,7 @@
#include <Qt3DRender/private/texturedatamanager_p.h>
#include <Qt3DRender/private/qabstracttexture_p.h>
#include <Qt3DRender/private/renderbuffer_p.h>
+#include <Qt3DRender/private/qtextureimagedata_p.h>
#include <Qt3DCore/qpropertyupdatedchange.h>
#include <Qt3DCore/qpropertynodeaddedchange.h>
#include <Qt3DCore/qpropertynoderemovedchange.h>
@@ -443,9 +444,10 @@ void GLTexture::uploadGLTextureData()
// Upload all QTexImageData references by the TextureImages
for (int i = 0; i < m_images.size(); i++) {
const QTextureImageDataPtr &imgData = m_imageData.at(i);
-
- // ensure we don't accidentally cause a detach / copy of the raw bytes
- const QByteArray bytes(imgData->data());
+ // Here the bytes in the QTextureImageData contain data for a single
+ // layer, face or mip level, unlike the QTextureGenerator case where
+ // they are in a single blob. Hence QTextureImageData::data() is not suitable.
+ const QByteArray bytes(QTextureImageDataPrivate::get(imgData.get())->m_data);
uploadGLData(m_gl, m_images[i].mipLevel, m_images[i].layer,
static_cast<QOpenGLTexture::CubeMapFace>(m_images[i].face),
bytes, imgData);