我需要在 android 中使用 opengl es 绘制一个旋转的地球。我认为我们需要绘制一个球体,然后在其上应用纹理贴图。如果我是正确的,我们不能使用 Opengl ES 中的实用程序库 glu 来绘制球体。我确实在 objective-c 中找到了一些代码,但我必须让它在 android 上运行。
http://www.iphone4gnew.com/procedural-spheres-in-opengl-es.html
还有其他方法吗?我不确定如何解决这个问题,你能给我一些让我朝着正确方向看的输入吗?
谢谢
最佳答案
您实际上可以创建自己的球体渲染函数。
一个镶嵌球体只不过是一堆 n 个圆锥段,每个圆锥段近似为 m 个切片。
这张图片(由 dglwiki.de 提供)说明了这一点:
(德语文本翻译为“如果分辨率太低,球体会退化为其他对称体”)
为了构建球体,您需要指定中心点、半径、堆栈数和每个堆栈的切片数。
球体的第一个极点可以是距中心点半径为 radius 的任何点。从这一点到中心点的矢量定义了球体的旋转轴(从而定义了第二个极点的位置)
接下来,您需要围绕旋转轴在球体上估算出几个等距的纬度圆。圈数应该是堆叠数-1。这些圆圈中的每一个都应具有与您所需的切片数量一样多的顶点。
计算完这些后,您就有了足够的几何信息来构建球面。
从使用第一个圆的顶点的一个极点开始的三角形扇形开始。 然后,为每对相邻的纬度圈构造三角形带。最后一步是从第二个极点到最后一个纬度圈构建另一个三角形扇形。
使用这种方法,您可以生成任意平滑度的任意球体
关于android - Opengl-es 中的旋转地球仪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3766799/