简体   繁体   English

OpenGL ES 2.0的学习曲线是否比Metal更陡峭?

[英]Does OpenGL ES 2.0 have a steeper learning curve than Metal?

I'm very interested in 3D graphics and heard many developers raving about Metal. 我对3D图形非常感兴趣,并听到许多开发人员对Metal赞不绝口。

Can someone who has worked with Metal and OpenGL ES 2.0 comment on how the learning curve compares to OpenGL ES 2.0? 可以使用Metal和OpenGL ES 2.0的人评论学习曲线与OpenGL ES 2.0的比较吗?

As a beginner who aims to stay loyal to iOS, is Metal easier to learn and master than OpenGL ES 2.0 or is it harder because it is more advanced? 作为一个致力于保持对iOS忠诚度的初学者,Metal比OpenGL ES 2.0更容易学习和掌握,还是因为它更先进而更难?

I hope this question will be useful to many as I am trying to figure out where to start. 我希望这个问题对许多人有用,因为我想弄清楚从哪里开始。

As a beginner, you might be better served by starting with 3D graphics at a higher level. 作为初学者,从更高级别的3D图形开始可能会更好。 SceneKit for OS X and iOS lets you describe a 3D scene in terms of its content -- geometry, materials (textures/shading), lights, and cameras -- and load assets created with 3D modeling tools. 用于OS X和iOS的SceneKit允许您根据其内容(几何,材质(纹理/阴影),灯光和相机)描述3D场景,并加载使用3D建模工具创建的资源。 SceneKit is built on OpenGL (ES), so it uses a lot of the same concepts. SceneKit基于OpenGL(ES)构建,因此它使用了许多相同的概念。 As you become familiar with those concepts, you can use SceneKit to work your way into the OpenGL world a bit at a time: 当您熟悉这些概念时,您可以使用SceneKit一次一步地进入OpenGL世界:

You'll find more info about all of these by watching the SceneKit videos from WWDC: What's New in SceneKit and Building a Game with SceneKit . 您可以通过观看WWDC中的SceneKit视频找到有关所有这些的更多信息: SceneKit中的新功能使用SceneKit构建游戏


Otherwise... OpenGL (ES) and Metal don't have very different learning curves in and of themselves. 否则...... OpenGL(ES)和Metal本身没有非常不同的学习曲线。 In fact, I'd consider Metal more approachable than OpenGL in some ways -- for example, many things you can do in GL have implicit and hard-to-predict performance costs, and the Metal analogues of those tasks are much more clear about their impact on CPU or GPU time is and allow you to decide when expensive work gets done. 事实上,我认为Metal在某些方面比OpenGL更容易接近 - 例如,你在GL中可以做的许多事情具有隐含的和难以预测的性能成本,并且这些任务的Metal类似物更清楚它们对CPU或GPU时间的影响是允许您决定何时完成昂贵的工作。

On the other hand, Metal is brand new -- there aren't yet a lot of third-party resources to help you learn it. 另一方面,Metal是全新的 - 目前还没有很多第三方资源可以帮助您学习它。 And lot of the hard things about learning 3D graphics are very similar whether you're working in Metal, OpenGL, DirectX, or another platform/API. 无论您是使用Metal,OpenGL,DirectX还是其他平台/ API,学习3D图形的许多难题都非常相似。 Once you learn the important stuff -- there are plenty of books and online tutorials for that, but StackOverflow isn't the best way to go looking for them -- getting up to speed with Metal or with OpenGL ES on a specific platform is pretty easy. 一旦你学到了重要的东西 - 有大量的书籍和在线教程,但StackOverflow并不是寻找它们的最佳方式 - 在特定平台上使用Metal或OpenGL ES的速度非常快简单。

Coming from an OpenGL-ES background, I had a good look at the Metal APIs. 来自OpenGL-ES背景,我很好地了解了Metal API。 I believe that the learning curve for Metal is steeper, not because it's a new API, but because it introduces low level constructs which developers previously didn't need to worry about. 我相信Metal的学习曲线更陡峭,不是因为它是一个新的API,而是因为它引入了开发人员以前不需要担心的低级构造。

If you compare fixed pipeline Open-GL with shader oriented Open GL flavours (On mobile: ES 1.x compared with ES 2.x, 3.x), and finally with Metal, what you have is increasingly powerful, increasingly generic APIs detached from the intuitive constructs (triangles, vertices, lamps) which constitute Open-GL's historical foundation. 如果你将固定管道Open-GL与面向着色器的Open GL口味(在移动设备上:ES 1.x与ES 2.x,3.x相比)进行比较,最后使用Metal,你所拥有的功能越来越强大,越来越通用的API分离从直观的构造(三角形,顶点,灯)构成Open-GL的历史基础。

Bear in mind that creating a more usable API isn't the main goal of Metal. 请记住,创建更有用的API并不是Metal的主要目标。 The goal of this framework is helping developers to get rid of driver overheads. 该框架的目标是帮助开发人员摆脱驱动程序开销。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM