OpenGL ES 2.0 iOS中的球体
可能重复:
在OpenGL ES中绘制一个球体
我已经浏览了很长一段时间了,还没有find合适的答案。 我开始学习Opengl ES 2.0(因为我需要在大学里做一个项目),最近完成了一个圆圈。 WOOPIE!
我已经看了很多类似的问题,但是这个问题要么过时,要么我太复杂了。 任何人都可以指出我如何在iOS上用opengl ES 2.0绘制一个坚实的球体的正确方向吗?
我不确定你有多远,所以我只是给出一些我认为可能有帮助的一般说明,并且指出一些我一直用来攀登学习曲线的资源。
一个球体是一个足够复杂的对象,您可能不想在代码中生成顶点,因为您可能已经绘制了圆 – 您将需要使用像Blender或Maya或Houdini这样的程序,无论您喜欢用来构build一个3d对象,然后导出它。
你的目标是遵循一个工作stream程:3D程序> .obj或者.collada文件> OpenGL可以使用的顶点数组。
你的顶点数组(应该是一个C数组[],而不是NSArray)将为每个顶点保存一个{x,y,z}位置,并且你可能也想使用纹理坐标和法线。 如果您打算使用纹理,则需要从3D程序中导出纹理坐标,如果您计划照亮对象,则需要导出法线。 纹理坐标将采用格式{s,t},将与其关联的顶点连接到矩形纹理上的2d坐标。 法线将是一个格式为{x,y,z}的向量。 tex坐标和法线可以在同一个数组中,你有顶点(交错)或分开的数组。 如果它们是交错的,那么在你的代码中你将会有一个VBO,而且速度通常更快,但是如果它们不是这样的话,你将会有不同的VBO – 一个用于位置顶点,一个用于tex坐标,一个用于法线。
这是一个很好的脚本,用于将.obj转换为C头文件以便与OpenGL一起使用。 所以,当你从3D程序导出到.obj之后,你会将.obj传递给这个脚本,它会吐出一个.h文件: http : //heikobehrens.net/2009/08/27/obj2opengl/
一旦你有了C头文件,你只要#import“sphere.h” – 然后当你稍后调用glBufferData读入顶点时,就传递了sphere.h中数组的名字。
这本书是我在iOS上学习OpenGL的最好的书。 它提供了对GLKit类的很好的解释,对初学者很友好: http ://my.safaribooksonline.com/book/animation-and-3d/9780132478939
如果有帮助的话,下面是几个月前我提出的一些示例代码。 它实际上把我们放在一个爆炸的领域,让我们滑动旋转: http : //davidsweetman.com/mobilemeetup-talk-glkit-demo.html