ios - 在 Swift 环境中切片类型的 MTLTexture - 2DArray
问题描述
考虑具有一定数量切片MTLTexture
的类型。2DArray
要计算此纹理的特定切片的直方图,如何仅将单个纹理切片的引用传递给 MPSImageHistogram 着色器?
一般来说,如何在 swift 环境中切片纹理? Texture.makeTextureview()
不是首选方式,因为它创建一个新的纹理会消耗更多的内存和时间。
解决方案
makeTextureView
不会创建新纹理,即使它返回MTLTexture
. 它创建一个纹理视图。让我解释。
您可以将纹理视为标题和一个或多个数据块。标头告诉 API 和 GPU 如何解释数据块。标题非常小,斑点可能很大。
现在,将纹理视图想象成一个新的标题,但它引用另一个纹理的 blob 并且没有自己的 blob,这意味着它不会将您正在“查看”的纹理的 blob 复制到其中。这是一种重新解释现有纹理数据的廉价方法。例如,当您只需要纹理数组的一个切片或立方体贴图的一个面时,或者如果您想将 sRGB 纹理视为线性的,或者反之亦然,您将使用纹理视图。
推荐阅读
- sql-server-2008-r2 - 如何确定从 vb6 代码登录到 Windows 服务器的工作站的 IP 地址
- android - 创建 Activity 时如何获取 DisplayCutout 高度?
- arrays - 值更改后的 CollectionView reloaddata()
- python - Axiom 和 Flask POST 和 GET 请求,传递参数
- wordpress - 带有可选子位置的 Nginx 位置
- arrays - 复杂字符串匹配 SPSS (v20)
- javascript - 如何使用 ReactJS 获取行的总数?
- html - JSON 绑定到一页上的多个表
- swift - Swift 4 使用参数打开 Safari
- rstudio - 从 Rmd 块输出内联显示的数据帧/小标题的控制格式