diff options
author | Antti Määttä <antti.maatta@qt.io> | 2020-10-14 11:50:21 +0300 |
---|---|---|
committer | Antti Määttä <antti.maatta@qt.io> | 2020-10-16 07:15:45 +0300 |
commit | 950e382f3a7d7c3671afbbd53e52746c1c8e2b96 (patch) | |
tree | d5a57da72f95487206606cb933ac92898c8e9c81 | |
parent | d874a3f85ae92d2b9e8378f21be85586545d9ac6 (diff) |
Fix images having subpresentations and mipmaps
Generate mipmaps each frame when they are used by images with
subpresentations.
Change-Id: Ic516d4e825ee81882601c4124381a5b3940d151d
Reviewed-by: Tony Leinonen <tony.leinonen@qt.io>
Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
-rw-r--r-- | src/runtimerender/graphobjects/Qt3DSRenderImage.cpp | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/runtimerender/graphobjects/Qt3DSRenderImage.cpp b/src/runtimerender/graphobjects/Qt3DSRenderImage.cpp index 4fff9ca..5382818 100644 --- a/src/runtimerender/graphobjects/Qt3DSRenderImage.cpp +++ b/src/runtimerender/graphobjects/Qt3DSRenderImage.cpp @@ -86,6 +86,8 @@ bool SImage::ClearDirty(IBufferManager &inBufferManager, IOffscreenRenderManager HandleOffscreenResult(*this, newImage, theResult, replaceTexture, wasDirty); inBufferManager.checkAlwaysPremultiplied(QString::fromLatin1(m_ImagePath.c_str()), newImage.m_TextureFlags); + if (newImage.m_Texture && m_MinFilter > NVRenderTextureMinifyingOp::Linear && wasDirty) + newImage.m_Texture->GenerateMipmaps(); } } @@ -97,13 +99,14 @@ bool SImage::ClearDirty(IBufferManager &inBufferManager, IOffscreenRenderManager HandleOffscreenResult(*this, newImage, theResult, replaceTexture, wasDirty); inBufferManager.checkAlwaysPremultiplied(QString::fromLatin1(m_ImagePath.c_str()), newImage.m_TextureFlags); + if (newImage.m_Texture && m_MinFilter > NVRenderTextureMinifyingOp::Linear && wasDirty) + newImage.m_Texture->GenerateMipmaps(); + } else if (!wasDirty) { + // Do not recheck image path if we are not dirty and we already have a texture + newImage.m_Texture = m_TextureData.m_Texture; } } - // Do not recheck image path if we are not dirty and we already have a texture - if (!wasDirty) - newImage.m_Texture = m_TextureData.m_Texture; - if (newImage.m_Texture == nullptr) { m_LastFrameOffscreenRenderer = nullptr; if (m_ImagePath.IsValid() && !m_OffscreenRendererId.IsValid() |