diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2018-08-13 15:26:43 +0200 |
---|---|---|
committer | Paul Lemire <paul.lemire@kdab.com> | 2018-10-11 09:14:32 +0000 |
commit | 12c76991b8ed7378f6d2645dec8dfdd5879562b1 (patch) | |
tree | f3138d328b8c465a346fd22c15e90d7fe9217b38 /src/render/texture | |
parent | 5149ff8c645a15bc7f9ea28f6c085d08d79ca784 (diff) |
Renderer: implement using OpenGL textures from a texture id
Change-Id: Ifc65966c50cb6fc8780206852f92bf1d4a6b4d5b
Task-number: QTBUG-69918
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src/render/texture')
-rw-r--r-- | src/render/texture/apitexturemanager_p.h | 14 | ||||
-rw-r--r-- | src/render/texture/texture.cpp | 2 |
2 files changed, 16 insertions, 0 deletions
diff --git a/src/render/texture/apitexturemanager_p.h b/src/render/texture/apitexturemanager_p.h index 58e6e6420..79dc9af94 100644 --- a/src/render/texture/apitexturemanager_p.h +++ b/src/render/texture/apitexturemanager_p.h @@ -257,6 +257,19 @@ public: return true; } + // Change the texture's referenced texture Id from a shared context + bool setSharedTextureId(APITexture *tex, int textureId) + { + Q_ASSERT(tex); + + if (isShared(tex)) + return false; + + tex->setSharedTextureId(textureId); + m_updatedTextures.push_back(tex); + return true; + } + // Retrieves abandoned textures. This should be regularly called from the OpenGL thread // to make sure needed GL resources are de-allocated. QVector<APITexture*> takeAbandonedTextures() @@ -344,6 +357,7 @@ private: newTex->setProperties(node->properties()); newTex->setParameters(node->parameters()); newTex->setImages(texImgs); + newTex->setSharedTextureId(node->sharedTextureId()); m_updatedTextures.push_back(newTex); diff --git a/src/render/texture/texture.cpp b/src/render/texture/texture.cpp index b87ea9c6d..5a45d2bc9 100644 --- a/src/render/texture/texture.cpp +++ b/src/render/texture/texture.cpp @@ -325,6 +325,8 @@ void Texture::initializeFromPeer(const Qt3DCore::QNodeCreatedChangeBasePtr &chan addTextureImage(imgId); addDirtyFlag(DirtyFlags(DirtyImageGenerators|DirtyProperties|DirtyParameters)); + if (m_sharedTextureId > 0) + addDirtyFlag(DirtySharedTextureId); } |