可能重复:
绘制在OpenGL ES球体
我一直在浏览了相当一段时间了,还没有找到适当的答案。 我开始学习OpenGL ES 2.0的(因为我需要在大学的项目),并于最近完成画一个圆圈。 WOOPIE!
我已经看过类似的诸多问题,但它是过期或我太复杂,我掌握。 任何人都可以点我的如何绘制与OpenGL ES 2.0的实心球在iOS正确的方向?
可能重复:
绘制在OpenGL ES球体
我一直在浏览了相当一段时间了,还没有找到适当的答案。 我开始学习OpenGL ES 2.0的(因为我需要在大学的项目),并于最近完成画一个圆圈。 WOOPIE!
我已经看过类似的诸多问题,但它是过期或我太复杂,我掌握。 任何人都可以点我的如何绘制与OpenGL ES 2.0的实心球在iOS正确的方向?
我不知道多远沿着你,所以我只是要给我认为可能有帮助的一般常识,并指向你,我一直在使用爬上了学习曲线的一些资源。
球体是一个足够复杂的对象,你可能不会想生成代码的顶点,你可能已经绘制的圆 - 你要使用像搅拌机或Maya或胡迪尼的程序,不管你喜欢用来构建一个三维物体,然后将其导出。
你的目标是遵循类似的工作流程:3D程序> .OBJ或者一个.collada文件>使OpenGL可以使用的顶点数组。
你的顶点数组(这应该是C数组[],而不是NSArray中)将举行{X,Y,Z}每个顶点的位置,你也可能要使用纹理坐标和法线。 你会想纹理坐标从您的3D节目出口,如果你打算使用纹理,你会要导出法线如果您计划在灯光的对象。 纹理坐标将是在连接它与到2D在矩形纹理坐标相关联的顶点的格式{S,T}。 法线将在格式{X,Y,Z}的矢量。 特克斯COORDS&法线可以是在同一阵列中你有(交错)或在单独的阵列中的顶点。 如果他们交错,然后在你的代码,你将有一个VBO和一般快的,但如果他们不,你必须单独维也纳组织 - 一个位置的顶点,一个用于TEX COORDS,一个用于法线。
这是一个好的剧本我已经遇到转换.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