Renderer: Improve texture view support (and support emulation for OGL)

This commit is contained in:
SirLynix
2022-12-02 22:58:34 +01:00
committed by Jérôme Leclercq
parent 08ea4c87a7
commit 56acbb2694
9 changed files with 99 additions and 24 deletions

View File

@@ -69,6 +69,7 @@ namespace Nz
NazaraAssert(viewInfo.layerCount <= m_parentTexture->m_textureInfo.layerCount - viewInfo.baseArrayLayer, "layer count exceeds number of layers");
NazaraAssert(viewInfo.levelCount <= m_parentTexture->m_textureInfo.levelCount - viewInfo.baseMipLevel, "level count exceeds number of levels");
m_textureInfo = ApplyView(m_parentTexture->m_textureInfo, viewInfo);
m_viewInfo = viewInfo;
// Try to use texture views if supported (core in GL 4.3 or extension)
@@ -77,11 +78,10 @@ namespace Nz
if (m_texture.Create(*m_parentTexture->m_texture.GetDevice()))
{
auto format = DescribeTextureFormat(viewInfo.reinterpretFormat);
GLenum target = ToOpenGL(ToTextureTarget(viewInfo.viewType));
context.ClearErrorStack();
m_texture.TextureView(target, m_parentTexture->m_texture.GetObjectId(), format->internalFormat, viewInfo.baseMipLevel, viewInfo.levelCount, viewInfo.baseArrayLayer, viewInfo.layerCount);
m_texture.TextureView(ToTextureTarget(viewInfo.viewType), m_parentTexture->m_texture.GetObjectId(), format->internalFormat, viewInfo.baseMipLevel, viewInfo.levelCount, viewInfo.baseArrayLayer, viewInfo.layerCount);
if (!context.DidLastCallSucceed())
m_texture.Destroy();