在 Swift 环境中切片类型为 - 2DArray 的 MTLTexture

Slicing a MTLTexture of type - 2DArray in Swift environment

考虑 MTLTexture 类型 2DArray 具有一定数量的切片。要计算此纹理的特定切片的直方图,如何仅将单个纹理切片的引用传递给 MPSImageHistogram 着色器?

一般来说,How to slice a texture in swift environment? Texture.makeTextureview() 不是首选方法,因为它会创建一个消耗更多内存的新纹理和时间。

makeTextureView 不会创建新纹理,即使它 returns MTLTexture。它创建一个纹理视图。让我解释一下。

您可以将纹理视为 header 和一个或多个数据块。 Header 告诉 API 和 GPU 如何解释数据块。 Header 很小,blob 可以很大。

现在,将纹理视图想象成一个新的 header,但它引用了另一个纹理的斑点并且没有自己的斑点,这意味着它不会复制您正在使用的纹理的斑点“观”入。这是一种重新解释现有纹理数据的廉价方法。例如,当您只需要纹理数组的一个切片或立方体贴图的一个面时,或者如果您希望将 sRGB 纹理视为线性或反之亦然,您将使用纹理视图。