Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Metal 在金属中压缩纹理格式时,如何在replaceRegion中设置bytesPerRow参数?_Metal - Fatal编程技术网

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

Metal 在金属中压缩纹理格式时,如何在replaceRegion中设置bytesPerRow参数?,metal,Metal,根据:对于压缩像素格式,步长是从一行块的开头到下一行块的开头的字节数。 我仍然不知道如何设置bytesPerRow。给定当前的纹理宽度和纹理格式级别,我可以得到“bytesPerRow”吗?或者有没有一般的计算方法 任何帮助都将不胜感激。谢谢。您需要知道: 纹理宽度 格式的块大小(例如,DXT1为4x4) 您的格式的每个块字节数(例如,DXT1是每个块8个字节) 那么公式是这样的: int blocksPerRow = (textureWidth + (blockWidth - 1)) /

根据:
对于压缩像素格式,步长是从一行块的开头到下一行块的开头的字节数。

我仍然不知道如何设置
bytesPerRow
。给定当前的纹理宽度和纹理格式级别,我可以得到“bytesPerRow”吗?或者有没有一般的计算方法

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

您需要知道:

  • 纹理宽度
  • 格式的块大小(例如,DXT1为4x4)
  • 您的格式的每个块字节数(例如,DXT1是每个块8个字节)
那么公式是这样的:

int blocksPerRow = (textureWidth + (blockWidth - 1)) / blockWidth;
bytesPerRow = blocksPerRow * bytesPerBlock;
编辑:对于PVRTC,请不要错过
replaceRegion

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

你需要知道:

  • 纹理宽度
  • 格式的块大小(例如,DXT1为4x4)
  • 您的格式的每个块字节数(例如,DXT1是每个块8个字节)
那么公式是这样的:

int blocksPerRow = (textureWidth + (blockWidth - 1)) / blockWidth;
bytesPerRow = blocksPerRow * bytesPerBlock;
编辑:对于PVRTC,请不要错过
replaceRegion

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


如果我想使用ATC压缩图像格式,我应该使用哪种MTLPixelFormat?从MTLPixelFormat中枚举的名称很难判断哪个是与压缩纹理格式对应的正确MTLPixelFormat,我不太熟悉。从这听起来像马里的astc生成器输出文件头中的块大小,但它不包括任何关于颜色空间的内容。谢谢。但我认为ATC和ASTC是两种不同的压缩纹理格式。也许我可以在苹果开发者论坛上发布这个问题。啊-我怀疑Metal API不支持ATC(当然不是在iOS上,但我不太熟悉桌面),如果我想使用ATC压缩图像格式,我应该使用哪种MTLPixelFormat?从MTLPixelFormat中枚举的名称很难判断哪个是与压缩纹理格式对应的正确MTLPixelFormat,我不太熟悉。从这听起来像马里的astc生成器输出文件头中的块大小,但它不包括任何关于颜色空间的内容。谢谢。但我认为ATC和ASTC是两种不同的压缩纹理格式。也许我可以在苹果开发者论坛上发布这个问题。啊-我怀疑Metal API不支持ATC(当然不是在iOS上,但我不太熟悉桌面)