和许多其他人一样,我一直在疯狂地寻找一个好的OpenGL ES 2.0教程。但我似乎尝过任何可用的,但我仍然没有信心。我知道 1.1 有一个固定的管道,而 2.0 让一切都取决于程序员的口味。所以我想我可能会从 1.1 教程中学习灯光、纹理和其他东西,然后在学习这些概念之后,我可以使用着色器手动完成所有未作为现成函数提供的内容。你认为我走在正确的道路上还是应该停下来?
你的问题有点主观,所以我的回答必然包含个人观点,但我相信从 1.1 开始学习 OpenGL ES 已经没有用了,人们应该从 2.0 开始。在iOS上,无法处理2.0的现场活动设备数量估计不到5%(根据销售额,这个数字可能是16%(。我不能谈论Android的统计数据,因为由于可用硬件的多样性,我很难确定那里的数字,但这似乎也非常有利于2.0。
当涉及到技术方面的事情时,我认为先学习 1.1 不会有太多好处,因为当迁移到 2.0 时,你最终会把很多东西扔到窗外。在 1.1 中学习特定的 API 调用来设置光源和材质属性没有多大意义,因为您必须创建自己的着色器程序才能在 2.0 中执行此操作。你并没有真正了解这些灯等在 1.1 的固定函数管道中是如何工作的,因为这就像一个黑匣子。当我迁移到 2.0 时,我发现我并不真正理解 1.1 中为我计算的内容,所以我没有从旧 API 的经验中获得太多收获。
两者之间相同的东西也可以从2.0开始学习。
1.1 比 2.0 的一大优势是示例代码和教程材料的可用性。但是,随着人们迁移到新的API,随着时间的推移,这种情况会变得越来越好,我在此答案中描述了我找到的有关该主题(重点是iOS(的一些最佳材料。正如我在那里指出的,我教过 1.1 和 2.0 的课程,可以在 iTunes U 上免费找到。该课程说明链接到我为演示如何复制 1.1 功能而收集的几个简单的 2.0 示例。在这个答案中,我还讨论了如何将一些 1.1 代码转换为 2.0(我链接到的 PowerVR 参考特别适合展示如何在 2.0 着色器中生成 1.1 效果(。
就我个人而言,我对OpenGL ES 2.0的感觉比使用1.1要自在得多,这在很大程度上是因为我觉得2.0 API要简单得多。我不必记住以正确的方式设置场景的所有命令,以及我可以使用 API 做什么和不能做什么。我只是编写简单的 GLSL 代码来做我想做的事。