gpt4 book ai didi

vulkan - VkFormat 名称中的 PACK8/16/32 是什么意思?

转载 作者:行者123 更新时间:2023-12-04 01:56:09 28 4
gpt4 key购买 nike

我试图理解 VkFormat 枚举中的项目名称,到目前为止,我认为我已经了解了所有(非 block )格式的名称的所有结构,但是当它们有 PACK8PACK16PACK32 后缀时,我无法弄清楚这意味着什么。如果我将 channel 大小加起来,它们总是加起来为 8、16 或 32,没有什么不规则的,所以我不明白对这些值进行位打包意味着什么,因为它们似乎是 100% 有效的,使用他们所有的位。

像往常一样,the documentation不是很有帮助,只是说格式是打包的,但没有说明那是什么意思。

最佳答案

PACK 字段的含义与规范中的含义完全相同:

whole texels or attributes are stored in a single data element, rather than individual components occupying a single data element

不过,如果您觉得这太令人困惑,您可以查看实际的格式说明。 Vulkan 对它们进行了极其详尽的描述,以至于不必要的重复。

VK_FORMAT_B8G8R8A8_RGBVK_FORMAT_B8G8R8A8_RGB_PACK32 之间的区别与 uint8_t[4]uint32_t 之间的区别相同.一个是数组(“单个组件”),而另一个是由较小的值组成的单个值(“单个数据元素”)。

如果您有一个存储 B8G8R8A8uint8_t color[4] 数组,则 color[0] 存储蓝色分量。数组中组件的顺序由格式名称中组件的顺序定义。

如果您有一个存储 B8G8R8A8uint32_t color 值,则 (color & 0xFF000000) >> 24 将检索蓝色分量.最高字节是第一个,然后是下一个最高字节,依此类推。

打包与未打包区别之所以重要是因为 endian issues .字节数组没有字节序问题。但是打包成 16 位或 32 位的值确实存在字节序问题。打包格式的字节顺序始终假定为主机的 native 字节顺序。

关于vulkan - VkFormat 名称中的 PACK8/16/32 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36098103/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com