diff --git a/Source/Engine/GraphicsDevice/DirectX/DX11/GPUTextureDX11.cpp b/Source/Engine/GraphicsDevice/DirectX/DX11/GPUTextureDX11.cpp index 19b42074f..73be91108 100644 --- a/Source/Engine/GraphicsDevice/DirectX/DX11/GPUTextureDX11.cpp +++ b/Source/Engine/GraphicsDevice/DirectX/DX11/GPUTextureDX11.cpp @@ -133,8 +133,9 @@ void GPUTextureDX11::OnResidentMipsChanged() srDesc.Texture2D.MostDetailedMip = firstMipIndex; srDesc.Texture2D.MipLevels = mipLevels; } - ID3D11ShaderResourceView* srView; - VALIDATE_DIRECTX_RESULT(_device->GetDevice()->CreateShaderResourceView(_resource, &srDesc, &srView)); + ID3D11ShaderResourceView* srView = nullptr; + if (mipLevels != 0) + VALIDATE_DIRECTX_RESULT(_device->GetDevice()->CreateShaderResourceView(_resource, &srDesc, &srView)); GPUTextureViewDX11& view = IsVolume() ? _handleVolume : _handlesPerSlice[0]; if (view.GetParent() == nullptr) view.Init(this, nullptr, srView, nullptr, nullptr, Format(), MultiSampleLevel()); diff --git a/Source/Engine/GraphicsDevice/DirectX/DX12/GPUTextureDX12.cpp b/Source/Engine/GraphicsDevice/DirectX/DX12/GPUTextureDX12.cpp index fb8642c86..dd7402097 100644 --- a/Source/Engine/GraphicsDevice/DirectX/DX12/GPUTextureDX12.cpp +++ b/Source/Engine/GraphicsDevice/DirectX/DX12/GPUTextureDX12.cpp @@ -240,7 +240,8 @@ void GPUTextureDX12::OnResidentMipsChanged() GPUTextureViewDX12& view = IsVolume() ? _handleVolume : _handlesPerSlice[0]; if (view.GetParent() == nullptr) view.Init(this, _device, this, Format(), MultiSampleLevel()); - view.SetSRV(srDesc); + if (mipLevels != 0) + view.SetSRV(srDesc); } void GPUTextureDX12::OnReleaseGPU()