为什么Metal没有rgb8Unorm MTLPixelFormat?

时间:2018-06-12 16:40:15

标签: ios metal

我有许多不需要Alpha通道的纹理。目前,我使用MTLPixelFormat rgba8Unorm选项加载这些内容,但这似乎有点浪费。我是否遗漏了一个选项,或者忽略了纹理数据中包含3个8位组件的格式的其他原理?

2 个答案:

答案 0 :(得分:3)

这可能是因为rgb8使用24位,这不是2的强大功能,计算机喜欢使用2的幂,特别是对于寻址数据。

答案 1 :(得分:1)

我不确定这是否是可以回答的,因为它需要知道Apple的人的意图,我们无法确切地知道这一点。我们只能猜测。

其中一个猜测是它们只支持在普通GPU上具有直接硬件支持的像素格式。请注意:a)Metal的设计理念的一部分是消除API和驱动程序的隐式工作,其中包括格式转换。这样的工作留待应用程序代码本身去做。并且b)并非所有支持某些地方的格式都受到支持。例如,为什么macOS不支持BGR5A1Unorm?它肯定可以转换为BGRA8Unorm,但它们没有。