diff options
author | Michael Brasser <michael.brasser@live.com> | 2017-11-07 20:07:34 -0600 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@qt.io> | 2018-01-31 08:13:31 +0000 |
commit | 07f9ca1759e35f1eb497fe2f1ad4b7ba71b69b5c (patch) | |
tree | 5dd23f1f31ac3df199572c3add1f25972ec4ec69 /src/quick/scenegraph/qsgdefaultrendercontext.cpp | |
parent | eace041161a03a849d3896af65493b7885cecc04 (diff) |
Basic working compressed texture atlas
This adds experimental automatic atlasing of ETC-compressed textures
(to be expanded to additional formats), similar to existing atlas
support of QImages. It is off by default, and can be enabled with
QSG_ENABLE_COMPRESSED_ATLAS=1.
[ChangeLog] Add experimental automatic atlasing of ETC-compressed
textures (can be enabled with QSG_ENABLE_COMPRESSED_ATLAS=1)
Change-Id: Ia66971f51299d082a569bdfaadb662a3e522bd79
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src/quick/scenegraph/qsgdefaultrendercontext.cpp')
-rw-r--r-- | src/quick/scenegraph/qsgdefaultrendercontext.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/quick/scenegraph/qsgdefaultrendercontext.cpp b/src/quick/scenegraph/qsgdefaultrendercontext.cpp index 95f3555994..12357f12c7 100644 --- a/src/quick/scenegraph/qsgdefaultrendercontext.cpp +++ b/src/quick/scenegraph/qsgdefaultrendercontext.cpp @@ -44,6 +44,7 @@ #include <QtQuick/private/qsgbatchrenderer_p.h> #include <QtQuick/private/qsgrenderer_p.h> #include <QtQuick/private/qsgatlastexture_p.h> +#include <QtQuick/private/qsgcompressedtexture_p.h> #include <QtQuick/private/qsgdefaultdistancefieldglyphcache_p.h> QT_BEGIN_NAMESPACE @@ -243,6 +244,14 @@ QSGRenderer *QSGDefaultRenderContext::createRenderer() return new QSGBatchRenderer::Renderer(this); } +QSGTexture *QSGDefaultRenderContext::compressedTextureForFactory(const QSGCompressedTextureFactory *factory) const +{ + // The atlas implementation is only supported from the render thread + if (openglContext() && QThread::currentThread() == openglContext()->thread()) + return m_atlasManager->create(factory); + return nullptr; +} + /*! Compile \a shader, optionally using \a vertexCode and \a fragmentCode as replacement for the source code supplied by \a shader. |