考虑具有一定数量切片MTLTexture
的类型。2DArray
要计算此纹理的特定切片的直方图,如何仅将单个纹理切片的引用传递给 MPSImageHistogram 着色器?
一般来说,如何在 swift 环境中切片纹理? Texture.makeTextureview()
不是首选方式,因为它创建一个新的纹理会消耗更多的内存和时间。
考虑具有一定数量切片MTLTexture
的类型。2DArray
要计算此纹理的特定切片的直方图,如何仅将单个纹理切片的引用传递给 MPSImageHistogram 着色器?
一般来说,如何在 swift 环境中切片纹理? Texture.makeTextureview()
不是首选方式,因为它创建一个新的纹理会消耗更多的内存和时间。
makeTextureView
不会创建新纹理,即使它返回MTLTexture
. 它创建一个纹理视图。让我解释。
您可以将纹理视为标题和一个或多个数据块。标头告诉 API 和 GPU 如何解释数据块。标题非常小,斑点可能很大。
现在,将纹理视图想象成一个新的标题,但它引用另一个纹理的 blob 并且没有自己的 blob,这意味着它不会将您正在“查看”的纹理的 blob 复制到其中。这是一种重新解释现有纹理数据的廉价方法。例如,当您只需要纹理数组的一个切片或立方体贴图的一个面时,或者如果您想将 sRGB 纹理视为线性的,或者反之亦然,您将使用纹理视图。