我是目前在App Store中有应用程序的Objective-C / Swift软件开发人员(在培训中)。但我最近对Metal,Apple的OpenGL新替代品感兴趣。但我并不确定如何开始...... Apple的文档很方便,但前提是你真的知道自己在做什么。开始有什么好的提示吗?我真的没有探索3D游戏编程领域所以你会建议我先学习另一种语言吗?如果是这样的话?
我只是在寻找能够深入了解方法和原因的优秀教程书籍或网站。我喜欢理解我到底做了什么,而不仅仅是输入代码,但是有很多语言和初学者的书,我真的不知道从哪里开始......任何人都可以帮忙我这个?
答案 0 :(得分:12)
Metal是一种较新的图形API。因此,如果您不熟悉图形和3D游戏编程,您可能需要从OpenGL开始 - 特别是因为有许多教科书可以使用OpenGL教您基本的图形。至于OpenGL的网页,我最喜欢的一个是songho。 OpenGL ES2.0和OpenGL ES3.0上的图书包含有关使用OpenGLES for iOS进行编程的部分。
如果您特别想要探索Metal API本身,那么WWDC 2014中有多个视频详细介绍了基础知识,并演示了如何在Xcode中使用Metal。一篇介绍文章,详细介绍了有关Metal的内容和原因,objc.io。更详细的一个是metalbyexample。
要深入了解这些图形API的工作原理,您可能需要掌握GPU架构。 Real-Time Rendering可能是关于这个主题的最好的书。来自加州大学戴维斯分校的John Owens教授的这些lecture videos也以清晰简洁的方式描述了该架构。
答案 1 :(得分:3)
我肯定会建议Marius Horga's blog作为起点。这就是我的开始,而Marius总是愿意提供帮助。
另一个地方是Warren Moore的metalbyexample.com,当然还有他的书。但是,它有大量用Objective-C编写的代码,但转换为Swift相当容易。
从Apple下载示例代码:https://developer.apple.com/metal/
最近我创建了一个GitHub repo,如何将Shadertoy着色器代码转换为Metal,您可以在here中访问它。
[重要说明] - 给出的一些示例代码已经与Xcode 8和Swift 3不兼容,您需要进行必要的更改以防止编译器阻塞它们。如果你需要Apple提供的三个很棒的代码示例,展示如何使用纹理,CPU和GPU级别的多线程,以及如何在Metal中绘制基元,还有Xcode 8 beta 6,兼容Swift 3,只需给我发一封电子邮件,我会把它们发给你。