diff --git a/include/Nazara/Renderer/Texture.hpp b/include/Nazara/Renderer/Texture.hpp index 7c742b0f7..7550af0c5 100644 --- a/include/Nazara/Renderer/Texture.hpp +++ b/include/Nazara/Renderer/Texture.hpp @@ -36,7 +36,7 @@ namespace Nz struct TextureViewInfo { ImageType viewType; - PixelFormat reinterpretFormat; + PixelFormat reinterpretFormat = PixelFormat::Undefined; UInt8 baseMipLevel = 0; UInt8 levelCount = 1; unsigned int baseArrayLayer = 0; diff --git a/include/Nazara/Renderer/Texture.inl b/include/Nazara/Renderer/Texture.inl index b89398a6b..c2e0b893c 100644 --- a/include/Nazara/Renderer/Texture.inl +++ b/include/Nazara/Renderer/Texture.inl @@ -9,7 +9,7 @@ namespace Nz inline TextureInfo Texture::ApplyView(TextureInfo textureInfo, const TextureViewInfo& viewInfo) { textureInfo.type = viewInfo.viewType; - textureInfo.pixelFormat = viewInfo.reinterpretFormat; + textureInfo.pixelFormat = (viewInfo.reinterpretFormat != PixelFormat::Undefined) ? viewInfo.reinterpretFormat : textureInfo.pixelFormat; textureInfo.width = GetLevelSize(textureInfo.width, viewInfo.baseMipLevel); textureInfo.height = GetLevelSize(textureInfo.height, viewInfo.baseMipLevel); textureInfo.depth = GetLevelSize(textureInfo.depth, viewInfo.baseMipLevel); diff --git a/src/Nazara/OpenGLRenderer/OpenGLTexture.cpp b/src/Nazara/OpenGLRenderer/OpenGLTexture.cpp index d8f7c579d..3c7bae5c3 100644 --- a/src/Nazara/OpenGLRenderer/OpenGLTexture.cpp +++ b/src/Nazara/OpenGLRenderer/OpenGLTexture.cpp @@ -102,7 +102,7 @@ namespace Nz { if (m_texture.Create(*m_parentTexture->m_texture.GetDevice())) { - auto format = DescribeTextureFormat(viewInfo.reinterpretFormat); + auto format = DescribeTextureFormat(m_textureInfo.pixelFormat); context.ClearErrorStack(); diff --git a/src/Nazara/VulkanRenderer/VulkanTexture.cpp b/src/Nazara/VulkanRenderer/VulkanTexture.cpp index f12a50e6f..9ad8cb72b 100644 --- a/src/Nazara/VulkanRenderer/VulkanTexture.cpp +++ b/src/Nazara/VulkanRenderer/VulkanTexture.cpp @@ -218,7 +218,7 @@ namespace Nz m_viewInfo = viewInfo; m_subresourceRange = { - ToVulkan(PixelFormatInfo::GetContent(viewInfo.reinterpretFormat)), + ToVulkan(PixelFormatInfo::GetContent(m_textureViewInfo.pixelFormat)), viewInfo.baseMipLevel, viewInfo.levelCount, viewInfo.baseArrayLayer, @@ -290,7 +290,7 @@ namespace Nz break; } - InitViewForFormat(viewInfo.reinterpretFormat, createInfoView); + InitViewForFormat(m_textureViewInfo.pixelFormat, createInfoView); if (!m_imageView.Create(m_device, createInfoView)) throw std::runtime_error("Failed to create image view: " + TranslateVulkanError(m_imageView.GetLastErrorCode()));