在 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 纹理视为线性或反之亦然,您将使用纹理视图。
考虑 MTLTexture
类型 2DArray
具有一定数量的切片。要计算此纹理的特定切片的直方图,如何仅将单个纹理切片的引用传递给 MPSImageHistogram 着色器?
一般来说,How to slice a texture in swift environment? Texture.makeTextureview()
不是首选方法,因为它会创建一个消耗更多内存的新纹理和时间。
makeTextureView
不会创建新纹理,即使它 returns MTLTexture
。它创建一个纹理视图。让我解释一下。
您可以将纹理视为 header 和一个或多个数据块。 Header 告诉 API 和 GPU 如何解释数据块。 Header 很小,blob 可以很大。
现在,将纹理视图想象成一个新的 header,但它引用了另一个纹理的斑点并且没有自己的斑点,这意味着它不会复制您正在使用的纹理的斑点“观”入。这是一种重新解释现有纹理数据的廉价方法。例如,当您只需要纹理数组的一个切片或立方体贴图的一个面时,或者如果您希望将 sRGB 纹理视为线性或反之亦然,您将使用纹理视图。