在Opengl-es旋转地球仪

时间:2010-09-22 06:24:51

标签: android opengl-es

我需要在android中使用opengl es绘制旋转地球仪。我认为我们需要绘制一个球体,然后在其上应用纹理贴图。如果我是正确的,我们不能在Opengl ES中使用实用程序库glu来绘制球体。我确实在目标C中找到了一些代码,但是我必须让它在android上运行。

http://www.iphone4gnew.com/procedural-spheres-in-opengl-es.html

还有其他办法吗?我不知道如何处理这个问题,你能给我一些输入,让我看起来正确的方向。

由于

2 个答案:

答案 0 :(得分:8)

您实际上可以创建自己的球体渲染功能。

一个镶嵌的球体不再是一堆n个锥形段,每个锥形段用m个切片近似。

此图片(dglwiki.de的courtsey)说明了这一点: gluSphere construction

(德语文本转换为'如果分辨率低,则球体退化为其他对称体)

为了构建球体,您需要指定中心点,半径,堆栈数和每个堆栈的切片数。

球体的第一个极点可以是距离中心点半径距离的任何点。从该点到中心点的矢量定义了球体的旋转轴(从而定义了第二个极点的位置)

接下来,您需要围绕旋转轴近似围绕球体的几个等距纬度圆。圆圈数应为堆栈数-1。这些圆圈中的每一个都应具有与所需切片数量一样多的顶点。

计算完这些后,您将获得足够的几何信息来构建球体面。

从使用第一个圆的顶点的一个极点开始的三角形扇形开始。 然后,为每对相邻的纬度圈构造三角形条带。最后一步是从第二极到纬度圈的最后一个构建另一个三角扇。

使用此方法,您可以生成任意平滑度的任意球体

答案 1 :(得分:2)

除了sum1所说的,你提供给obj-C代码的链接大多只是C,它很好地转换为Java / android。提供的技术与sum1建议的非常相似,尽管作者在顶部仅使用一个扇形,然后用一个三角形条带绘制球体的整个剩余部分。此外,他的球体正在“侧卧”,球迷在“东极”,另一点在“西极”。

但是,您可以按原样使用您提供的链接,也可以轻松进行调整。