我有许多不需要Alpha通道的纹理。目前,我使用MTLPixelFormat
rgba8Unorm
选项加载这些内容,但这似乎有点浪费。我是否遗漏了一个选项,或者忽略了纹理数据中包含3个8位组件的格式的其他原理?
答案 0 :(得分:3)
这可能是因为rgb8使用24位,这不是2的强大功能,计算机喜欢使用2的幂,特别是对于寻址数据。
答案 1 :(得分:1)
我不确定这是否是可以回答的,因为它需要知道Apple的人的意图,我们无法确切地知道这一点。我们只能猜测。
其中一个猜测是它们只支持在普通GPU上具有直接硬件支持的像素格式。请注意:a)Metal的设计理念的一部分是消除API和驱动程序的隐式工作,其中包括格式转换。这样的工作留待应用程序代码本身去做。并且b)并非所有支持某些地方的格式都受到支持。例如,为什么macOS不支持BGR5A1Unorm
?它肯定可以转换为BGRA8Unorm
,但它们没有。