diff options
author | Sean Harmer <sean.harmer@kdab.com> | 2016-04-01 15:55:23 +0100 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2016-04-10 15:03:38 +0000 |
commit | 11051c2316a6e2aa2f193d5793035a99821f77f0 (patch) | |
tree | d4bac31e0447d299c79b5027238dbc14089eb581 /src | |
parent | 20ed96d5d051f5ad8d50a6937a2c40e9323c0d70 (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.cpp | 34 | ||||
-rw-r--r-- | src/render/texture/texture_p.h | 2 |
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(); |