围绕球体(地球)绘制轨迹(线)

Draw a trajectory (lines) around a sphere (earth)

本文关键字:绘制 轨迹 地球      更新时间:2023-10-16

我想画一个围绕球体的轨迹。每个点都由纬度和经度坐标组成。所以,我要通过做第一个旋转(长),然后做第二个旋转(纬度),然后平移(z)来放置每个点。

但如果我在glBegin()glEnd()之间做任何变换,我就不能画线。。。这是被禁止的。。

你知道怎么做吗?我是否必须自己从lat/lon/alt计算每个点(x,y,z)的坐标,而不是进行变换?(我读到转换比自己完成工作更快…)

除非你想上传一个为你做转换的vertexshader,否则你必须这样做。此外,自OpenGL 3.0以来,glRotate等函数实际上已被弃用。

"慢"是相对的。我很确定,使用glRotate()等调用进行旋转比只计算每个顶点在三维空间中的位置要慢。

与此相关的是,如果这是一条轨迹,你几乎肯定想沿着地球上的一个大圆走,而不是在三维空间中将它们画成直线。

只需对轨迹上的点进行采样,并将其绘制为GL_LINE_STRIP。

以下是一些重要信息:不要使用OpenGL固定函数矩阵堆栈(glRotate、glTranslate、glScale等)。使用它很麻烦,使用真正的矩阵数学库会变得容易得多。此外,固定功能已从现代OpenGL中删除。这就引出了我的第二条建议:不要使用即时模式(glBegin…glEnd),它是一个性能杀手,也已从现代OpenGL中删除。