《Metal》官方文档翻译09--缓冲区和纹理操作:Blit命令编码器

MTLBlitCommandEncoder提供了在资源(缓冲区和纹理)之间复制数据的方法。对于图像处理和纹理效果(如模糊或反射),数据复制操作可能是必需的。它们可以用于访问在屏幕外渲染的图像数据。

要执行数据复制操作,首先MTLBlitCommandEncoder通过调用blitCommandEncoder方法创建一个对象MTLCommandBuffer。然后调用MTLBlitCommandEncoder下面描述的方法将命令编码到命令缓冲区上。

在资源对象之间复制GPU内存中的数据

以下MTLBlitCommandEncoder方法在资源对象之间复制图像数据:两个缓冲区对象之间,两个纹理对象之间以及缓冲区和纹理之间。

复制两个缓冲区之间的数据

该方法copyFromBuffer:sourceOffset:toBuffer:destinationOffset:size:在两个缓冲区之间复制数据:从源缓冲区到目标缓冲区toBuffer。如果源和目的地是相同的缓冲区,并且正在复制的范围重叠,则结果是未定义的。

将数据从缓冲区复制到纹理

该方法将copyFromBuffer:sourceOffset:sourceBytesPerRow:sourceBytesPerImage:sourceSize:toTexture:destinationSlice:destinationLevel:destinationOrigin:图像数据从源缓冲区复制到目标纹理中toTexture。

复制两个纹理之间的数据

该方法copyFromTexture:sourceSlice:sourceLevel:sourceOrigin:sourceSize:toTexture:destinationSlice:destinationLevel:destinationOrigin:将两个纹理之间的图像数据区域复制:从源纹理的单个立方体切片和mipmap级别到目标纹理toTexture。

将数据从纹理复制到缓冲区

该方法copyFromTexture:sourceSlice:sourceLevel:sourceOrigin:sourceSize:toBuffer:destinationOffset:destinationBytesPerRow:destinationBytesPerImage:将源纹理的单个立方体切片和mipmap级别的图像数据区域复制到目标缓冲区toBuffer。

生成Mipmap

从基层纹理图像开始,为给定的纹理自动生成mipmap
的generateMipmapsForTexture:方法MTLBlitCommandEncoder。generateMipmapsForTexture:为所有mipmap级别创建缩放图像,直到最大级别。

有关mipmap的数量和每个mipmap的大小如何确定的详细信息,请参阅Slices。

填充缓冲区的内容

在给定缓冲区指定的每个字节fillBuffer:range:value:中MTLBlitCommandEncoder存储8位常量的方法。valuerange

Blit命令编码器的结束编码

要结束blit命令编码器的编码命令,请调用endEncoding。在结束上一个命令编码器之后,您可以创建任何类型的新命令编码器,以将其他命令编码到命令缓冲区中。

下一页

上一页

你可能感兴趣的:(《Metal》官方文档翻译09--缓冲区和纹理操作:Blit命令编码器)