【问题标题】:Sphere in OpenGL es 2.0 iOS [duplicate]OpenGL es 2.0 iOS中的球体[重复]
【发布时间】:2012-11-29 09:13:39
【问题描述】:

可能重复:
Drawing a sphere in OpenGL ES

我已经浏览了很长时间,但还没有找到合适的答案。我开始学习Opengl es 2.0(因为我需要在大学做一个项目),最近完成了画一个圆圈。哇!

我看过很多类似的问题,但它们要么已经过时,要么太复杂以至于我无法理解。 谁能指出如何在 iOS 上使用 opengl ES 2.0 绘制实心球体的正确方向?

【问题讨论】:

    标签: iphone objective-c ios opengl-es-2.0


    【解决方案1】:

    我不确定你已经走了多远,所以我只是提供一些我认为可能会有所帮助的一般性说明,并为你指出一些我一直用来爬上学习曲线的资源.

    球体是一个足够复杂的对象,您可能不想在代码中生成顶点,因为您可能已经绘制了圆——您需要使用像 Blender、Maya 或 Houdini 这样的程序,你喜欢用什么来构建一个 3d 对象,然后导出它。

    您的目标是遵循以下工作流程: 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

    【讨论】:

    • 嗨。您提到我们的工作流程应该是 3D 程序 > .obj 或者可能是 .collada 文件 > .h 文件。你能推荐任何脚本,就像你为 .obj 文件所做的那样,它将 collada 文件转换为 .h 用于 OpenGL?谢谢:)
    • 我相信《Learning OpenGL ES for iOS》一书的示例代码中包含了一个 collada 导入器:my.safaribooksonline.com/book/animation-and-3d/9780132478939
    • 你太棒了!非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多