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