Add support for using mipmaps with 3D textures
This commit is contained in:
@@ -431,11 +431,6 @@ bool GPUTexture::Init(const GPUTextureDescription& desc)
|
||||
LOG(Warning, "Cannot create texture. Only 2D Texture can be used as a Depth Stencil. Description: {0}", desc.ToString());
|
||||
return true;
|
||||
}
|
||||
if (desc.MipLevels != 1)
|
||||
{
|
||||
LOG(Warning, "Cannot create texture. Volume texture cannot have more than 1 mip level. Description: {0}", desc.ToString());
|
||||
return true;
|
||||
}
|
||||
if (desc.ArraySize != 1)
|
||||
{
|
||||
LOG(Warning, "Cannot create texture. Volume texture cannot create array of volume textures. Description: {0}", desc.ToString());
|
||||
|
||||
@@ -732,7 +732,9 @@ void GPUContextDX11::UpdateTexture(GPUTexture* texture, int32 arrayIndex, int32
|
||||
auto textureDX11 = static_cast<GPUTextureDX11*>(texture);
|
||||
|
||||
const int32 subresourceIndex = RenderToolsDX::CalcSubresourceIndex(mipIndex, arrayIndex, texture->MipLevels());
|
||||
const uint32 depthPitch = texture->IsVolume() ? slicePitch / texture->Depth() : slicePitch;
|
||||
uint32 depthPitch = slicePitch;
|
||||
if (texture->IsVolume())
|
||||
depthPitch /= Math::Max(1, texture->Depth() >> mipIndex);
|
||||
_context->UpdateSubresource(textureDX11->GetResource(), subresourceIndex, nullptr, data, (UINT)rowPitch, (UINT)depthPitch);
|
||||
|
||||
//D3D11_MAPPED_SUBRESOURCE mapped;
|
||||
|
||||
Reference in New Issue
Block a user