在金属中压缩纹理格式时,如何在replaceRegion中设置bytesPerRow参数?

时间:2019-05-24 03:52:35

标签: metal

根据replaceRegion docFor a compressed pixel format, the stride is the number of bytes from the beginning of one row of blocks to the beginning of the next.

我仍然不知道如何设置bytesPerRow。给定当前的纹理宽度和纹理格式水平,可以得到'bytesPerRow'吗?还是有任何通用的计算方法?

任何帮助将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:2)

您需要知道:

  • 纹理宽度
  • 格式的块大小(例如DXT1为4x4)
  • 您的格式的每个块的字节数(例如DXT1为每个块8字节)。

然后公式类似于:

int blocksPerRow = (textureWidth + (blockWidth - 1)) / blockWidth;
bytesPerRow = blocksPerRow * bytesPerBlock;

编辑:对于PVRTC,请不要错过replaceRegion

的重要提示
  

如果要以PowerVR纹理压缩(PVRTC)像素格式复制到整个纹理,则支持此方法;在这种情况下,bytesPerRow和bytesPerImage都必须设置为0。此方法不支持复制到具有PVRTC像素格式的纹理的子区域。