ios - Metal 纹理的 RGBA 和 BGRA 格式之间的权衡

标签 ios opengl-es metal

我正在使用 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/

相关文章:

objective-c - SBJSON 失败,包含二进制数据的 json

ios - xib 的 collectionview 单元格未显示

android - 如何在使用 cordova 构建的现有混合应用程序上实现拉动刷新

opengl - OpenGL ES和OpenGL兼容的着色器

ios - 在大纹理上渲染小纹理时,Metal 比 OpenGL 慢得多

ios - 不确定如何使用 CICrop 裁剪图像

iphone - 立方体边缘出现白边

c++ - OpenGL:三角形带中的退化三角形在 OpenGL-ES 之外是否可以接受?

ios - 用 Metal 渲染四边形性能

macos - 电池供电时 CVDisplayLink 定时器的稳定性