【问题标题】:Are main principles different in OpenGL ES 1.1 and 2.0?OpenGL ES 1.1 和 2.0 的主要原则是否不同?
【发布时间】:2012-05-16 05:33:50
【问题描述】:

和其他许多人一样,我一直在疯狂寻找优秀的 OpenGL ES 2.0 教程。但我似乎尝过任何可用的东西,但我仍然没有信心。我知道 1.1 有一个固定的管道,而 2.0 让一切都取决于程序员的口味。所以我想我可以从 1.1 教程中学习灯光、纹理和东西,然后在学习了这些概念之后,我可以使用着色器手动完成所有未作为现成函数提供的东西。你认为我走对了还是应该停下来?

【问题讨论】:

  • “我可以使用着色器手动完成所有未作为现成函数提供的东西”:关于这一点,请注意,一旦启用着色器,您必须自己处理所有事情。您不能利用固定管道并在顶部添加一点额外内容。为特定批次启用着色器后,您必须在着色器中执行所有操作(变换、照明、纹理等)。您仍然可以使用着色器渲染一些对象,而一些不使用着色器,但对于那些启用着色器的对象,您只能靠自己了。
  • 我并不是说把所有东西都写在 1.1 中然后开始使用着色器。我只是想了解OpenGL ES的方式。毕竟,固定函数不是在幕后做着色器之类的事情吗? 1.1 和 2.0 的主要区别不在于前者让你只做预先确定的效果,而后者让你以任何方式做任何你想做的事吗?
  • Tim 的意思是,学习 OpenGL ES 1.1 如何处理光照、材质属性等实际上是在浪费时间,因为您无法真正将这些内容带到 2.0 中。您将为此滚动自己的着色器,而 1.1 并没有真正公开它在幕后的工作方式。
  • 许多扩展(以 EOS 结尾)成为标准 =))

标签: opengl-es-2.0 opengl-es-1.1


【解决方案1】:

你的问题有点主观,所以我的回答必然包含个人观点,但我认为从 1.1 开始学习 OpenGL ES 已经没有用了,人们应该从 2.0 开始。在 iOS 上,无法处理 2.0 的现场活动设备的数量估计不到 5%(based on sales,这个数字可能最高的是 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,这种情况会随着时间的推移而变得更好,我在 this answer 中描述了我在该主题(重点是 iOS)中找到的一些最佳材料。正如我在那里指出的那样,我教授 1.1 和 2.0 的课程,可以免费找到 on iTunes U。该链接的课程说明指向我组装的几个简单的 2.0 示例,以演示如何复制 1.1 功能。我还在this answer 中讨论了如何将一些 1.1 代码转换为 2.0(我链接到的 PowerVR 参考特别适合展示如何在 2.0 着色器中生成 1.1 效果)。

就我个人而言,我使用 OpenGL ES 2.0 比使用 1.1 更自在,这在很大程度上是因为我觉得 2.0 API 更简单。我不必记住以正确方式设置场景的所有命令,以及我可以使用 API 做什么和不能做什么。我只是编写简单的 GLSL 代码来做我想做的事。

【讨论】:

  • 谢谢,布拉德。你像往常一样准时。我完全同意你对 2.0 的感觉。
猜你喜欢
  • 2011-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多