OpenGL 与 OpenGL ES 以及 OpenGL 1.x 与 OpenGL 2.0 需要学习什么?

Jim*_*ard 3 opengl opengl-es

我打算买一本关于 OpenGL 的书,但我有一些关于我应该学习什么的问题。

我在致力于学习 OpenGL 1.x 还是 OpenGL 2.0 之间左右为难,因为 OpenGL ES 2.0 仅存在于 3G 及更高版本上,如果我要开发一个应用程序并将其放在应用程序商店中,我希望每个人都拥有一部 iPhone能够使用该应用程序。

另外,我想尝试桌面 OpenGL。

所以,我的问题如下:

简而言之,我应该学习什么?如果我学习桌面 OpenGL,是否可以轻松转移到 OpenGL ES?就像如果我了解 c/c++ 中的 OpenGL,我是否也会了解 OpenGL ES,它们之间有哪些主要区别?

另外,您是否建议我同时学习 1.x 和 2.0,因为我之前说过的具体原因是,我希望所有 iphone 用户都能够使用我的应用程序,而不仅仅是 3G 及更高版本?

最后,有什么值得推荐的书吗?我真的很喜欢本教程的风格。它非常容易理解,展示了大量代码,并仔细解释了每一行代码。

Mik*_*enz 5

我自己也面临同样的问题,我的决定是使用 OpenGL ES 2.0。首先是因为当今使用的绝大多数 iOS 设备都可以运行它(iPhone 3GS 或更好)。其次,因为 OpenGL 的未来是着色器,因为它们比 ES 1 的固定管道提供了更多的灵活性。

也就是说,我要补充一点,使用着色器并不容易。在 ES 2 中设置所有内容比在 ES 1 中花费更多的精力。更多的事情可能会出错,很多时候你会看到你的程序除了一个空白屏幕之外什么也没有创建,让你抓耳挠腮。头并想知道为什么。

不过,一旦掌握了基础知识,ES 2 并没有那么糟糕。这是一个相当陡峭的学习曲线。

至于桌面 vs ES 的问题,我建议学习 ES。它是 OpenGL 的一个非常好的、功能强大的子集,并且允许您编写在更多平台上运行的程序。如果您想将代码移植到 ES,使用完整的 OpenGL 可能会给您带来麻烦,因为它的某些方面无法转换。

为了让您开始使用 OpenGL ES 2,我强烈推荐本教程本书