android - Opengl-es 中的旋转地球仪

标签 android opengl-es

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

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

还有其他方法吗?我不确定如何解决这个问题,你能给我一些让我朝着正确方向看的输入吗?

谢谢

最佳答案

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

一个镶嵌球体只不过是一堆 n 个圆锥段,每个圆锥段近似为 m 个切片。

这张图片(由 dglwiki.de 提供)说明了这一点: gluSphere construction

(德语文本翻译为“如果分辨率太低,球体会退化为其他对称体”)

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

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

接下来,您需要围绕旋转轴在球体上估算出几个等距的纬度圆。圈数应该是堆叠数-1。这些圆圈中的每一个都应具有与您所需的切片数量一样多的顶点。

计算完这些后,您就有了足够的几何信息来构建球面。

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

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

关于android - Opengl-es 中的旋转地球仪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3766799/

相关文章:

java - 读取隐藏的 zip 文件

android - OpenGL-渲染到纹理-屏幕的特定区域

iphone - 3D CAD 到 OpenGL

opengl-es - 如何在mapbox GL JS自定义样式层中使用u_time

java - 在 OpenGL ES 2.0 中绘制球体

javascript - 具有简单纹理的 Webgl 怪异渲染

android - 在 JNI 中将位图转换为 Opencv::Mat

android - MATCH_PARENT 如果兄弟 View 较大,WRAP_CONTENT 如果兄弟 View 较小

Android 线程和服务停止,恕不另行通知

android - 如何获取扩展 ListView 项中复选框的 ID?