为什么 VkImageView 格式与底层 VkImage 格式不同?

whn*_*whn 2 textures imageview vulkan

VkImageCreateInfo拥有以下成员:

 VkFormat                   format;
Run Code Online (Sandbox Code Playgroud)

并且VkImageViewCreateInfo有相同的成员。

我不明白为什么你会拥有与创建它所需的 VkImageView不同的格式。VkImage

我了解某些格式彼此兼容,但我不知道为什么您要使用其中一种替代格式

Jes*_*all 5

规范的用例和主要原始动机(在 D3D10 中,这个想法起源于 D3D10)是将单个图像用作 或 —— 要么R8G8B8A8_UNORM因为R8G8B8A8_SRGB它在不同时间保存不同的内容,要么因为有时您希望在 sRGB 空间中进行操作而无需线性化。

更一般地说,有时在不同时间在图像对象中拥有不同“类型”的内容是有用的——这为引擎提供了有限形式的内存别名,并且在全功能内存别名问世之前几年就被引入到图形 API 中。