金属性能着色器和后备复制分配器
💡一则或许对你有用的小广告
欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论
- 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于
Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...
,点击查看项目介绍 ;- 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;
截止目前, 星球 内专栏累计输出 82w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2800+ 小伙伴加入学习 ,欢迎点击围观
使用 Metal Performance Shaders 时可用的选项之一是就地过滤纹理。这在 What's New in Metal Part 2 中进行了讨论,但略微掩盖了实际的实现。更糟糕的是,后备复制分配器直到最新的 iOS 9 beta 版本才真正起作用,所以如果你一直在苦苦挣扎,这里有一篇简短的博客文章可以提供帮助。
过滤源纹理并填充目标纹理时, encodeToCommandBuffer() 具有以下签名:
encodeToCommandBuffer(commandBuffer, sourceTexture: srcTexture, destinationTexture: targetTexture)
但是,使用以下语法,我们可以将滤镜应用于适当的纹理:
encodeToCommandBuffer(commandBuffer, sourceTexture: srcTexture, destinationTexture: targetTexture)
一些过滤器,例如 MPSImageMedian 无法就地过滤,在这种情况下,我们需要创建一个 MPSCopyAllocator 实例,它会创建一个纹理并确保就地版本的 encodeToCommandBuffer 始终成功。实际上并没有可用的 descriptorFromTexture() 方法(如 WWDC 视频中所示),因此 copyAllocator 的正确 Swift 定义是:
encodeToCommandBuffer(commandBuffer, sourceTexture: srcTexture, destinationTexture: targetTexture)
...现在以下将起作用:
encodeToCommandBuffer(commandBuffer, sourceTexture: srcTexture, destinationTexture: targetTexture)
简单的!