iPhone的OpenGL ES是什么?

5

我完全没有OpenGL的经验,刚开始尝试iPhone开发。从谷歌上看,iPhone使用一种特殊类型的OpenGL(openGL ES)。openGL ES支持哪些编程语言?我了解一点C++,但现在我相信我的C和Objective-C比C++更好。

2个回答

4

访问OpenGL与使用任何C库相同。如果您能使用C编程,则可以处理OpenGL。如果您熟悉向Xcode项目添加框架和库,则应该能够处理OpenGL项目。

注意:OpenGL ES并不是iPhone独有的。 OpenGL ES是OpenGL库的简化版本,用于处理移动设备中较小的内存和较慢的处理器。像Android这样的其他手机也在使用它。

与标准OpenGL相比,OpenGL ES的一个好处是它真正减少了桌面版OpenGL的API调用次数。只保留了被认为是必要的那些调用。如果有重复执行相同操作的方式,则删除其中一种方式。这意味着您需要学习的内容更少。

与标准OpenGL相比,OpenGL ES的一个缺点是它真正减少了桌面版OpenGL的API调用次数。当您研究如何在OpenGL中做某事时,您会一遍又一遍地发现在桌面上有一种很酷的方法来做,但是在移动版本中几乎找不到任何方法。幸运的是,随着移动开发变得越来越流行,这将不再是一个问题,而且已经出现了许多OpenGL ES书籍(请参见Munshi)。

此外,并非所有的OpenGL ES都是相同的。大致上,您有OpenGL ES 2.0以及之前的版本,通常称为OpenGL ES 1.x。这两者之间最明显的区别是可编程管道(顶点和片段着色器)的集成。如果您使用Xcode创建一个基本的OpenGL ES项目,则会发现需要进行一些简单示例的操作才能处理不同版本之间的差异。

着色器代码本身是一种类似于C的编程语言。有一些怪癖,但很快就可以学会,并且非常有用。

请叫我奇怪,但我喜欢玩Open GL和ES变体。虽然困难,但奖励是值得的,因为您将获得强大而实用的API。希望您能够通过早期的学习阶段,并真正享受使用OpenGL。


0

如果您之前没有OpenGL经验,建议使用一个框架进行开发。我已经看过两个:

  • SIO2(免费,但如果您想将其包含在发布的标题中,则需要支付许可证费用)

  • Unity(难以学习,但显然更加灵活)。

至于编程语言,大多数都是使用C或C ++编写的。您可以混合使用Objective-C(被称为Objective-C ++),并且它将能够成功编译,但当您混合使用UIKit和OpenGL时会遇到真正的麻烦-只要您不这样做,您应该可以使用您喜欢的任何编程语言轻松开发。


我不同意向新手推荐依赖OpenGL的分层软件作为一般性的好建议。此外,关于混合使用UIKit和OpenGL的评论在没有更多解释/上下文的情况下有些误导和错误。任何iOS上的OpenGL开发人员都会使用UIKit和OpenGL是完全可以预料的。在iOS中,如果不使用UIKit,就无法创建可见的绘图表面。 - user501138
谢谢您的反馈。不过请注意,我是在5年前写下这个答案的……那时候情况可能有所不同了。也许现在已经不再相关了? - makdad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接