首页 > 解决方案 > 在 Swift 环境中切片类型的 MTLTexture - 2DArray

问题描述

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

一般来说,如何在 swift 环境中切片纹理? Texture.makeTextureview()不是首选方式,因为它创建一个新的纹理会消耗更多的内存和时间。

标签: iosswiftmetalmetal-performance-shaders

解决方案


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

您可以将纹理视为标题和一个或多个数据块。标头告诉 API 和 GPU 如何解释数据块。标题非常小,斑点可能很大。

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


推荐阅读