学习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基础的不错的复习)
解决方案
回答
iPhone SDK本身有一些文档。
除此之外,只需了解我们对OpenGL的了解(或者通过其他方式学习),然后忘记所有"老问题"(显示列表,即时模式,OpenGL中的但与绘制三角形)。基本上,取消学习在OpenGL 3.0中已声明已弃用的所有内容。
GL ES 1.x适用于非常简单的设备。我们所拥有的是一种绘制几何图形(顶点缓冲区),管理纹理并设置某些固定功能状态(照明,纹理组合器)的方法。这几乎就是它的全部。
回答
在花了很多时间开发3D之后,我意识到,在大多数情况下,最好的方法是通过实例学习并随身携带。
首先为自己设定要实现的目标(例如,实施粒子系统。这包括使用混合模式,纹理,顶点颜色,批处理和变换),然后从最简单的元素绘图开始并旋转四边形。从那里继续添加纹理,添加更多的四边形,等等。
这样做时,我们需要一些可以在很多书中找到的语法信息,但是最好的(非常无聊的)资源是可以在这里找到的规范委员会出版物:http://www.khronos.org/opengles /规格/
即使遇到很多问题,一旦遇到问题,在这种情况下,请最好的朋友:演示和示例!
我们可以在在线和Apple站点上找到许多适用于iPhone的示例资源,因此请下载它们,复制所需的内容,然后根据需要进行更改。
玩得开心。
回答
在开始使用OpenGL ES时,我发现这些功能非常有用,只是为了了解人们在处理ES而不是普通GL时会采取什么方法。
http://www.zeuscmd.com/tutorials/opengles/index.php
如前所述,iPhone开发人员站点也提供了一些示例:
http://developer.apple.com/iphone/library/navigation/Frameworks/Media/OpenGLES/index.html
回答
如果我可以插入自己的作品,请直接转到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阻止了这种情况。分子的源代码现在可用。
作为更新(2010年11月16日),我在OpenGL ES 1.1上教授的课程的视频现在可以在iTunes U上作为课程的一部分下载。有关该课程的注释,请参见此处。我很快将用本周的OpenGL ES 2.0课程更新一个秋季学期的视频。
同时,Philip Rideout发布了关于iPhone的OpenGL ES 1.1和2.0开发的优秀著作,称为iPhone 3D编程。我强烈推荐它。
回答
仅供参考,Brad Larsons Molecules代码现在可在此处获得。
回答
如果我们已经下载了iPhone SDK示例,请查看崩溃着陆的EAGLview文件。这是GLES视图的非常简单的实现,可以将其导入并在其他项目中使用得很干净。该项目中还有一个名为Texture2d的类(如果我记得的话),如果我们打算将GLES用于2D,这也非常有趣。
回答
我也可以建议使用Android易于获取,并且我们可以很快地拥有一个可运行的模拟器。而且,据我所知,它使用的是v1.0。
可能会有更多的教程,但是即使Google提供的APIDemos也介绍了OpenGL ES。我当然觉得这很有帮助。
回答
iphonedevelopment.blogspot.com上有一些很棒的教程
回答
我们可能需要看一下iPhone上出色的OpenGL ES Jef LaMarches教程。