summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSean Harmer <sean.harmer@kdab.com>2016-04-01 15:55:23 +0100
committerSean Harmer <sean.harmer@kdab.com>2016-04-10 15:03:38 +0000
commit11051c2316a6e2aa2f193d5793035a99821f77f0 (patch)
treed4bac31e0447d299c79b5027238dbc14089eb581 /src
parent20ed96d5d051f5ad8d50a6937a2c40e9323c0d70 (diff)
Texture handles creation
Added a TODO about rethinking the approach for setting up the relationship between Textures and TextureImages. Change-Id: I97f6d4ee5194e2b255c06a0f236f7fdbe265cc5b Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src')
-rw-r--r--src/render/texture/texture.cpp34
-rw-r--r--src/render/texture/texture_p.h2
2 files changed, 36 insertions, 0 deletions
diff --git a/src/render/texture/texture.cpp b/src/render/texture/texture.cpp
index 7bccedef1..ee1b2894e 100644
--- a/src/render/texture/texture.cpp
+++ b/src/render/texture/texture.cpp
@@ -49,6 +49,7 @@
#include <Qt3DCore/qscenepropertychange.h>
#include <Qt3DRender/private/managers_p.h>
#include <Qt3DRender/private/texturedatamanager_p.h>
+#include <Qt3DRender/private/qabstracttexture_p.h>
QT_BEGIN_NAMESPACE
@@ -152,6 +153,39 @@ void Texture::updateFromPeer(Qt3DCore::QNode *peer)
}
}
+void Texture::initializeFromPeer(const Qt3DCore::QNodeCreatedChangeBasePtr &change)
+{
+ const auto typedChange = qSharedPointerCast<Qt3DCore::QNodeCreatedChange<QAbstractTextureData>>(change);
+ const auto &data = typedChange->data;
+
+ QMutexLocker lock(&m_lock);
+ m_target = data.target;
+ m_format = data.format;
+ m_width = data.width;
+ m_height = data.height;
+ m_depth = data.depth;
+ m_generateMipMaps = data.autoMipMap;
+ m_minificationFilter = data.minFilter;
+ m_magnificationFilter = data.magFilter;
+ m_wrapModeX = data.wrapModeX;
+ m_wrapModeY = data.wrapModeY;
+ m_wrapModeZ = data.wrapModeZ;
+ m_maximumAnisotropy = data.maximumAnisotropy;
+ m_comparisonFunction = data.comparisonFunction;
+ m_comparisonMode = data.comparisonMode;
+ m_layers = data.layers;
+ m_dataFunctor = data.dataFunctor;
+ if (m_dataFunctor)
+ addToPendingTextureJobs();
+
+ // TODO: Handle texture image ids better. At the moment we rely upon the assumption
+ // in the TextureImage that its parent is a Texture. Better to set the ids from here
+ // I think, and do it consistently with other types that refer to other nodes.
+ //data.textureImageIds
+
+ m_isDirty = true;
+}
+
// RenderTread
QOpenGLTexture *Texture::getOrCreateGLTexture()
{
diff --git a/src/render/texture/texture_p.h b/src/render/texture/texture_p.h
index adf2cb587..d26ac060c 100644
--- a/src/render/texture/texture_p.h
+++ b/src/render/texture/texture_p.h
@@ -119,6 +119,8 @@ public:
inline bool dataUploadRequired() const { return m_dataUploadRequired; }
private:
+ void initializeFromPeer(const Qt3DCore::QNodeCreatedChangeBasePtr &change) Q_DECL_FINAL;
+
QOpenGLTexture *m_gl;
QOpenGLTexture *buildGLTexture();