关于iphone:学习OpenGL ES 1.x

关于iphone:学习OpenGL ES 1.x

Learning OpenGL ES 1.x

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

让我们假设我对OpenGL一无所知(这并不完全正确,但是自从我上次使用OpenGL已经有一段时间了)。我对学习有关iPhone相关开发的内容最感兴趣,但也对学习它在其他平台上的工作方式也很感兴趣。

我已经找到了《 OpenGL ES 2.0编程指南》一书,但我担心这可能不是最好的方法,因为它专注于2.0而不是1.x。我的理解是2.0与1.x不向下兼容,因此我可能会错过一些重要的概念。

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

我发现了一些资源:

  • http://khronos.org/opengles/1_X/
  • http://www.imgtec.com/powervr/insider/sdk/KhronosOpenGLES1xMBX.asp
  • 保罗·马兹(Paul Martz)提炼的OpenGL(关于OpenGL基础的不错的复习)

如果我可以插入自己的作品,请直接转到http://www.sunsetlakesoftware.com/2008/08/05/lessons-molecules-opengl-es上的文章。这不是对OpenGL ES的最好的整体介绍,并且很快就获得了相当的技术性,但是这是我根据编写分子的经验来解决的。另外,我刚刚开始阅读《移动3D图形:带有OpenGL ES和M3G的书》。

我同意以下建议:最好的学习方法是边做边学。我开始对OpenGL一无所知,三周后又让Molecules进入App Store进行审查。一旦有了清晰的目标集("好,我需要绘制一个3D球体","现在我需要按需旋转它"),就可以轻松地找到示例或文档的一部分,仅适用于您正在处理的任务。

这里有许多代码示例,尽管其中许多代码示例使用即时模式和OpenGL ES不支持的其他调用。 我想通过将源代码发布给Molecules来添加到列表中,但是到目前为止,Apple的NDA阻止了这种情况。 Molecules的源代码现已可用。

我在OpenGL ES 1.1上教授的课程的视频现在可以作为我在iTunes U上Spring课程的一部分下载。有关该课程的注释,请参见此处。秋季学期的视频在OpenGL ES 2.0上有一个讲授。

此外,Philip Rideout还发布了关于iPhone的OpenGL ES 1.1和2.0开发的优秀著作,称为iPhone 3D编程。我强烈推荐它。


iPhone SDK本身有一些文档。

除此之外,只需了解您对OpenGL的了解(或通过其他方式了解),然后就忽略所有"旧文件"(显示列表,即时模式,在OpenGL中但在与仅绘制三角形不直接相关)。基本上,取消学习在OpenGL 3.0中已声明弃用的所有内容。

GL ES 1.x适用于非常简单的设备。您所拥有的是一种绘制几何图形(顶点缓冲区),管理纹理并设置某些固定功能状态(照明,纹理组合器)的方法。这几乎就是全部。


https://web.archive.org/web/20160309222642/http://iphonedevelopment.blogspot.com/2009/05/opengl-es-from-ground-up-table-of有一些很棒的教程.html


仅供参考,Brad Larsons Molecules代码现在可以在此处使用。


我发现这些在从OpenGL ES开始时非常有帮助,只是为了了解人们在处理ES而不是普通GL时会采取什么方法。

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

如前所述,iPhone开发人员站点也提供了一些示例:

  • https://developer.apple.com/documentation/opengles
  • https://developer.apple.com/library/archive/documentation/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/Introduction/Introduction.html

您可能想看一下iPhone上出色的Jef LaMarche的OpenGL ES教程。


如果您下载了iPhone SDK示例,请查看崩溃着陆的EAGLview文件。这是GLES视图的非常简单的实现,可以将其导入并在其他项目中使用得很干净。该项目中还有一个名为Texture2d的类(如果我记得的话),如果您打算将GLES用于2D,这也非常有趣。


花了很多时间开发3D之后,我才意识到,在大多数情况下,最好的方法是通过实例学习并随身携带。

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

即使您遇到很多问题,一旦遇到问题,在这种情况下也请最好的朋友:演示和示例!
您可以在网上和Ap??ple网站上找到许多适用于iPhone的示例资源,因此请下载它们,复制并粘贴所需的内容,然后根据需要进行更改。

玩得开心。


我还可以建议您使用Android-它很容易获得,并且您可以非常快速地拥有一个可运行的模拟器。而且,据我所知,它使用的是v1.0。
可能会有更多的教程,但是即使Google提供的APIDemos也介绍了OpenGL ES。我当然认为这很有帮助。


推荐阅读