我想要加载一个纹理,它作为ARGB (有一个字节的组件)放置在内存中。因此,当用Vulkan加载它时,我需要向它应用一个纹理抖动,因为在Vulkan中没有ARGB像素格式。
我的问题是,我应该更喜欢使用VK_FORMAT_R8G8B8A8_UNORM而不是VK_FORMAT_B8G8R8A8_UNORM,还是相反?
PD:这个纹理只使用一次,然后更新。
编辑:请注意,可用的替代品是:
VK_FORMAT_R8G8B8A8_UNORMVK_FORMAT_B8G8R8A8_UNORMVK_FORMAT_A8B8G8R8_UNORM_PACK32 (相当于LE系统上的VK_FORMAT_R8G8B8A8_UNORM,因此我将忽略它)发布于 2020-01-20 14:47:25
在Vulkan中,这两种非打包类型都是必需的图像格式,因此在大多数类型的图像使用中,Vulkan实现中都将始终存在。只要您不使用缓冲区视图、图像加载/存储或附件的格式,就没有任何Vulkan可检测的理由选择一种格式而不是另一种格式。
由于您将对图像视图应用一个swizzle掩码,格式中组件的顺序与纹理采样操作没有太大关系。
因此,你使用哪一种只是品味的问题。
https://stackoverflow.com/questions/59824914
复制相似问题