diff options
author | Laszlo Agocs <laszlo.agocs@qt.io> | 2018-06-26 15:48:19 +0200 |
---|---|---|
committer | Laszlo Agocs <laszlo.agocs@qt.io> | 2018-06-27 07:35:38 +0000 |
commit | ec3fc2d48c3270f2dd63d10ad2202b10403b26ef (patch) | |
tree | c41ad523e464872f108953aeca2e95f4b93f333e /src/render/renderers/opengl/textures/gltexture.cpp | |
parent | 979570f4e421a4f4aab2f39e32b7bed629a89531 (diff) |
Fix QTextureImageData data access with individual TextureImages
Task-number: QTBUG-69138
Change-Id: I0d980db0873af4f64dddc356d6d3ec4bc4c81857
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src/render/renderers/opengl/textures/gltexture.cpp')
-rw-r--r-- | src/render/renderers/opengl/textures/gltexture.cpp | 8 |
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); |