diff --git a/src/renderer_vk.cpp b/src/renderer_vk.cpp index 0d568f3c6..ef10a84c7 100644 --- a/src/renderer_vk.cpp +++ b/src/renderer_vk.cpp @@ -6118,11 +6118,25 @@ VK_DESTROY region.bufferImageHeight = 0; region.imageSubresource.aspectMask = m_aspectMask; region.imageSubresource.mipLevel = _mip; - region.imageSubresource.baseArrayLayer = _side; + region.imageSubresource.baseArrayLayer = 0; region.imageSubresource.layerCount = 1; - region.imageOffset = { _rect.m_x, _rect.m_y, _z }; + region.imageOffset = { _rect.m_x, _rect.m_y, 0 }; region.imageExtent = { _rect.m_width, _rect.m_height, _depth }; + if (VK_IMAGE_VIEW_TYPE_3D == m_type) + { + region.imageOffset.z = _z; + } + else if (VK_IMAGE_VIEW_TYPE_CUBE == m_type + || VK_IMAGE_VIEW_TYPE_CUBE_ARRAY == m_type) + { + region.imageSubresource.baseArrayLayer = _z * 6 + _side; + } + else + { + region.imageSubresource.baseArrayLayer = _z; + } + copyBufferToTexture(_commandBuffer, stagingBuffer, 1, ®ion); s_renderVK->release(stagingBuffer);