我正在使用 Metal 开发一个 iOS 应用程序,并且可以选择使用 RGBA 或 BGRA 作为纹理格式。该应用程序将是:
- 渲染成纹理
- 在屏幕上绘制纹理
- 从纹理生成
UIImages
- 从
UIImages
初始化纹理
选择 RGBA 而不是 BGRA 是否有任何性能权衡?后两点将我引向 RGBA,但我还注意到 MTKTextureLoader
默认为 BGRA 纹理。我找不到任何解决 Metal 中 RGBA 和 BRGA 之间差异的应用说明。
最佳答案
BGRA 是 iOS 设备上纹理和图像数据的默认和最佳格式。虽然支持 RGBA,但在使用 UIImage 和 CoreGraphics 读取 RGBA 纹理时,使用 RGBA 格式可能会导致实际性能问题,因为这些层可以静默地为每个像素重新排序字节(这会损害每个像素的性能)。可以通过设备上的 memcpy() 复制 BGRA native 数据。
关于ios - Metal 纹理的 RGBA 和 BGRA 格式之间的权衡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53378966/