summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAntti Määttä <antti.maatta@qt.io>2020-10-14 11:50:21 +0300
committerAntti Määttä <antti.maatta@qt.io>2020-10-16 07:15:45 +0300
commit950e382f3a7d7c3671afbbd53e52746c1c8e2b96 (patch)
treed5a57da72f95487206606cb933ac92898c8e9c81
parentd874a3f85ae92d2b9e8378f21be85586545d9ac6 (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.cpp11
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()