学习OpenGL ES 1.x

什么是加快OpenGL ES 1.x速度的最快方法?

假设我对OpenGL一无所知(这不完全正确,但是自从我上次使用OpenGL以来已经有一段时间了)。 我最感兴趣的是学习这个与iPhone相关的开发,但我有兴趣了解它如何在其他平台上工作。

我find了OpenGL ES 2.0编程指南 ,但是我担心它可能不是最好的方法,因为它专注于2.0而不是1.x。 我的理解是2.0不能与1.x向后兼容,所以我可能会错过一些重要的概念。

注意:有关学习常规OpenGL的答案,请参阅https://stackoverflow.com/questions/62540/learning-opengl


我find的一些资源:

  • http://khronos.org/opengles/1_X/
  • http://www.imgtec.com/powervr/insider/sdk/KhronosOpenGLES1xMBX.asp
  • 由Paul Martz 蒸馏的OpenGL (对OpenGL基础进行了很好的回顾)

iPhone SDK本身有一些文档。

除此之外,只需要了解OpenGL的知识(或者通过其他方式学习),忘记所有“旧式”的东西(显示列表,即时模式,OpenGL中的东西,但不直接涉及到绘制三angular形)。 基本上,忘掉在OpenGL3.0中声明过的所有东西。

GL ES 1.x适用于非常简单的设备。 你有什么办法来绘制几何(顶点缓冲区),pipe理纹理和设置一些固定的function状态(照明,纹理组合器)。 这几乎是所有这一切。

如果我可以把自己的工作,我会直接到我的职位http://www.sunsetlakesoftware.com/2008/08/05/lessons-molecules-opengl-es 。 这不是OpenGL ES的最好的整体介绍,它的技术相当快,但是从我写Molecules的经验来看,这是我的主题。 另外,我刚刚开始阅读“移动3Dgraphics:使用OpenGL ES和M3G”一书 。

我同意最好的学习方法是做的。 我开始对OpenGL一无所知,三周后在App Store中有了Molecules的评论。 一旦你有一个明确的目标(“好吧,我需要绘制一个三维球体”,“现在我需要旋转它的需求”),很容易find适用于文件的例子或部分你正在做的任务。

这里有很多代码示例,尽pipe其中很多代码使用了OpenGL ES中不支持的即时模式和其他调用。 我希望通过向Molecules发布来源来增加名单,但是苹果的NDA已经阻止了这一点。 Molecules的源代码现在可用 。

作为更新(11/16/2010),我在OpenGL ES 1.1上教授的课程video现在可以作为我在iTunes U课程的一部分下载。 该会议的笔记可以在这里find。 我将很快在本周的OpenGL ES 2.0课程中更新秋季学期video。

与此同时,Philip Rideout发布了一本关于iPhone的OpenGL ES 1.1和2.0开发的优秀书籍,名为iPhone 3D Programming 。 我强烈推荐它。

在iphonedevelopment.blogspot.com有一些很好的教程

从OpenGL ES开始,我发现这些function相当有用,只是为了看看在处理ES时采用什么方法而不是正常的GL。

http://www.zeuscmd.com/tutorials/opengles/index.php

如前所述,iPhone开发者网站也提供了一些样本:

http://developer.apple.com/iphone/library/navigation/Frameworks/Media/OpenGLES/index.html

仅供参考,Brad Larsons分子代码现在可以在这里find 。

你可能想看看这个优秀的Jef LaMarche在iPhone上的OpenGL ES教程。

花了很多时间开发3D之后,我意识到,在大多数情况下,最好的方法是学习示例,并随时随地推进。

首先为自己设定一个目标(例如 – 实现一个粒子系统,包括混合模式,纹理,顶点颜色,批处理和转换),然后从最简单的元素开始 – 绘制和旋转四元组。 从那里继续下去,添加纹理,添加更多的四边形,等等…虽然这样做,你需要一些关于语法的信息 – 这你可以在许多书中find,但最好的(非常无聊)来源是规范委员会的出版物可以在这里find: http : //www.khronos.org/opengles/spec/

即使有这样的情况,你也会碰到很多问题,好吧,一旦遇到问题,请在这些情况下去找你最好的朋友:演示和例子!
你可以在网上find很多iPhone的例子源码,在苹果网站上下载,复制粘贴你需要的东西,然后改变你的需求。

玩的开心。

如果您已经下载了iPhone SDK示例,请查看崩溃着陆的EAGLview文件。 这是一个非常简单的GLES视图的实现,可以在其他项目中相当干净地导入和使用。 在这个项目中还有另一个叫做Texture2d的类(如果我记得),如果你使用GLES来处理2D,这也是非常有趣的。

我也可以build议Android – 这很容易得到,你可以很快有一个工作模拟器。 另外,据我所知,它使用v1.0。
可以有更多的教程,但是即使是由Google提供的APIDemos也有OpenGL ES的介绍。 我当然觉得这很有帮助。