绘制球体(地球)周围的轨迹(线条)

时间:2013-07-08 19:53:32

标签: c++ opengl geometry

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

但如果我在glBegin()glEnd()之间进行任何转换,我就无法画线......这是禁止的......

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

2 个答案:

答案 0 :(得分:0)

只需在轨迹上采样点并将其绘制为GL_LINE_STRIP。

以下是一些重要信息:不要使用OpenGL固定函数矩阵堆栈(glRotate,glTranslate,glScale等)。使用真正的矩阵数学库时,使用起来很麻烦,事情变得如此简单。固定功能也已从现代OpenGL中删除。这让我想到了第二条建议:不要使用立即模式(glBegin ... glEnd),它是一个性能杀手,并且已经从现代OpenGL中删除了。

答案 1 :(得分:0)

除非你想上传一个为你做转换的顶点着色器,是的,你必须这样做。此外,自Ope​​nGL 3.0以来,glRotate等函数实际上已被弃用。

'慢'是相对的。我很确定使用像glRotate()等调用来进行旋转比仅计算每个顶点的3d空间中的位置要慢。

在相关的说明中,如果它是一条轨迹,你几乎肯定想要在地球上跟随一个大圆而不是在3d空间中将它们画成直线。