如何将数据上传到压缩图像中?

How do I upload data into a compressed image?

我最近尝试在 Vulkan 中使用块压缩图像格式,发现当我将代码切换为使用压缩图像格式时,我在渲染时得到了一个完整的垃圾图像。

使用 NVIDIA Nsight 也显示了我看到的相同图像。

我通过将原始 SRGB 像素复制到临时缓冲区并启动 vkCmdCopyBufferImage 到目标图像来上传数据。如果 VkImageVkImageView 的格式为:VK_FORMAT_R8G8B8A8_SRGB,我会得到此输出

但是当我将格式更改为VK_FORMAT_BC7_SRGB_BLOCK时。我得到这张图片:

我想知道在将数据复制到图像之前是否需要进行任何转换,还是我只是错误地处理了压缩纹理

用于上传代码的 Pastebin:https://pastebin.com/yrmRrQGp

如果您想使用压缩图像格式,您必须提供按照该格式压缩的图像数据。您不能只更改图像格式并期望一切正常。