MYYA
快速解释了示例中的代码。您应该研究一下功能void drawSphere(double r, int lats, int longs):void drawSphere(double r, int lats, int longs) { int i, j; for(i = 0; i <= lats; i++) { double lat0 = M_PI * (-0.5 + (double) (i - 1) / lats); double z0 = sin(lat0); double zr0 = cos(lat0); double lat1 = M_PI * (-0.5 + (double) i / lats); double z1 = sin(lat1); double zr1 = cos(lat1); glBegin(GL_QUAD_STRIP); for(j = 0; j <= longs; j++) { double lng = 2 * M_PI * (double) (j - 1) / longs; double x = cos(lng); double y = sin(lng); glNormal3f(x * zr0, y * zr0, z0); glVertex3f(r * x * zr0, r * y * zr0, r * z0); glNormal3f(x * zr1, y * zr1, z1); glVertex3f(r * x * zr1, r * y * zr1, r * z1); } glEnd(); }}参数lat定义了您的球体中要有多少条水平线以及lon几条垂直线。r是球体的半径。现在在lat/上进行了两次迭代,lon并使用简单的三角函数计算了顶点坐标。现在计算出的顶点利用发送到您的GPU glVertex...()的GL_QUAD_STRIP,这意味着你要发送形成与先前2派四每两个顶点。现在,您只需要了解三角函数的工作方式即可,但是我想您可以轻松地弄清楚。