MetalPerformanceShadersProxy 0.3.0

MetalPerformanceShadersProxy 0.3.0

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布时间最后发布时间2018年9月

Mathias ClaassenSantiago CastroDiego ErnstMartin Barreto维护。



MetalPerformanceShadersProxy

Build status Platform iOS Swift 4 compatible Carthage compatible CocoaPods compatible License: MIT

Xmartlabs SRL

一个代理 MetalPerformanceShaders(及其依赖项),它将模拟器上的 存根 导向到 设备的实际实现。它适用于 Swift 和 Objective-C。

当使用 Metal 着色器时,通常不能为模拟器目标进行编译是一个问题。通过使用此代理,您可以在模拟器上编译和运行。请注意,尝试在模拟器上运行 Metal 着色器将失败。尽管如此,它允许实现 Metal 着色器的项目

  • 上传到 CocoaPods。
  • 创建框架以与 Carthage 一起使用。
  • 在模拟器上运行应用程序以使用不依赖于 Metal 着色器的功能。
  • 编译单元测试。
  • 自动测试(可能使用 CI 服务器)不依赖于 Metal 着色器的应用程序的部分。

用法

如果您使用 Metal,您可能使用来自 CoreVideoCVMetalTexture.hCVMetalTextureCache.h 或来自 QuartzCoreCAMetalDrawable.h。但当针对模拟器时,它们不可用。为了使它们可用,只需这样做

import MetalPerformanceShadersProxy

此 pod 将不会在设备上添加 存根无足迹!),因为代理使用预处理器宏来决定使用哪个实现。

请注意,如果调用存根方法,将会抛出异常。

从MTK视图中获取currentDrawable

MTKViewcurrentDrawable属性在设备上为CAMetalDrawable类型,但在模拟器中为MTLDrawable类型。因此,您需要在代码中对其进行强制类型转换以正确使用。例如,如果您有

let texture = view.currentDrawable.texture

将其更改为

let texture = (view.currentDrawable as? CAMetalDrawable)?.texture

这是我们想出的最佳解决方案。如果您有更好的想法,请提出问题。

高级:何时使用占位符的控制

如果出于某种原因您想控制何时使用占位符,请按如下方式导入占位符:

#if condition
    import MetalPerformanceShadersStub
#endif

创建的方式

参见CREATION以获取解释。

要求

  • iOS 9.0+
  • Xcode 9.0+

要使用之前的Xcode版本,请参阅早期版本。

参与进来

  • 如果您想贡献代码,请随时提交拉取请求
  • 如果您有功能请求,请提出问题
  • 如果您找到了错误或需要帮助,请提出问题前先查看旧问题。

特别是,如果您发现缺少Metal依赖框架,请提出问题,或更好的是提交一个拉取请求😄

在贡献之前,请仔细阅读CONTRIBUTING文件以获取更多信息。

如果您已在您的应用程序中使用MetalPerformanceShadersProxy,我们非常愿意了解!请在Twitter上与我们联系。

示例

按照以下3个步骤运行示例项目:克隆MetalPerformanceShadersProxy仓库,打开MetalPerformanceShadersProxy工作区并运行示例项目。

作为一个实际示例,您可以查看Bender库。

安装

CocoaPods

CocoaPods是Cocoa项目的依赖管理工具。

要安装MetalPerformanceShadersProxy,只需在您的Podfile中添加以下行

pod 'MetalPerformanceShadersProxy', '~> 0.3'

如果您只需要占位符

pod 'MetalPerformanceShadersProxy/Stub', '~> 0.3'

Carthage

Carthage是一个简单的、去中心化的Cocoa依赖管理工具。

要安装MetalPerformanceShadersProxy,只需在您的Cartfile中添加以下行

github "xmartlabs/MetalPerformanceShadersProxy" ~> 0.2

作者

变更记录

可以在变更记录文件中找到。