金属入门

Getting started with Metal

我是一名 Objective-C / Swift 软件开发人员(正在接受培训),目前在 App Store 中有一个应用程序。但我最近对 ​​Metal 很感兴趣,它是 Apple 的 OpenGL 新替代品。但我不确定如何开始……Apple 的文档很方便,但前提是您首先真正知道自己在做什么。有什么好的开始技巧吗?我真的没有探索过 3D 游戏编程领域,所以您会建议我先学习另一种语言吗?如果是的话是哪个?

我只是在寻找深入了解方法和原因的优秀教程书籍或网站。我想了解我到底在做什么,而不是仅仅输入代码,但是有太多的语言和初学者的书籍,我真的不知道从哪里开始......任何人都可以帮助我吗?

Metal 是一种较新的图形 API。因此,如果您不熟悉图形和 3D 游戏编程,您可能想从 OpenGL 开始——特别是因为有许多教科书教您使用 OpenGL 的图形基础知识。至于 OpenGL 网页,我最喜欢的网页之一是 songho. Books on OpenGL ES2.0 and OpenGL ES3.0,其中包含有关使用 OpenGLES 进行编程的部分 iOS。

如果您特别想探索 Metal API 本身,WWDC 2014 中有多个视频详细介绍了基础知识,并提供了有关如何在 Xcode 中使用 Metal 的演示。 objc.io one. And a more detailed one is metalbyexample.

是一篇介绍性文章,详细介绍了关于 Metal 的内容和原因。

要深入了解这些图形 API 的工作原理,您可能需要掌握 GPU 架构。加州大学戴维斯分校的 John Owens 教授的 Real-Time Rendering is probably the best book on the subject. These lecture videos 也以清晰简洁的方式描述了该体系结构。

  1. 我肯定会推荐 Marius Horga's blog 作为起点。我就是这样开始的,Marius 总是乐于助人。

  2. 另一个值得一去的地方是 metalbyexample.com Warren Moore 的著作,当然还有他的书。但是,它有大量代码用 Objective-C 编写,但很容易转换为 Swift.

  3. 从 Apple 下载示例代码:https://developer.apple.com/metal/

  4. 最近我创建了一个 GitHub repo 如何将 Shadertoy 着色器代码转换为 Metal,您可以在 here.

    [=29= 中访问它]

[重要说明] - 给出的一些示例代码已经与 Xcode 8 和 Swift 3 不兼容,您将需要制定所需的更改以防止编译器阻塞他们。如果您需要 Apple 提供的三个很棒的代码示例,展示如何使用纹理、CPU 和 GPU 级别的多线程,以及如何在 Metal 中绘制图元,也是 Xcode 8 beta 6,Swift 3兼容,给我发邮件,我发给你。