GLUT:如何制作半径大于 1 的球体?

GLUT: How to Make Sphere with radius greater than 1?

我正在尝试使用 OpenGL 为项目制作一个太阳系。因为我也有其他行星和卫星,我想让我的太阳大于半径=1,我的地球=1,因为略小于 0.18,球体几乎不可见,并且无法以适当的大小差异绘制卫星。

下面是我的代码,如果我尝试制作一个半径 > 1 的球体,它就会变成甜甜圈(圆环)状。谁能指导我如何使用半径 > 1 的 gluSphere 制作球体?

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
gluOrtho2D(-5.0, 5.0, -5.0, 5.0);

GLUquadric *quad;
quad = gluNewQuadric();
gluQuadricDrawStyle(quad, GLU_FILL);

//Sun
glColor3f(2,1.65, 0);
glPushMatrix();
gluSphere(quad, 1, 20, 20);
glPopMatrix();

//Earth
glColor3f(0, 0, 1);
glTranslated(2.f, 0.f, 0.f);
glPushMatrix();
gluSphere(quad, 0.18, 20, 20);
glPopMatrix();

球体被观察体积的近平面和远平面裁剪(Orthographic projection). Use glOrtho instead of gluOrtho2D 并增加到近平面和远平面的距离:

gluOrtho2D(-5.0, 5.0, -5.0, 5.0);

glOrtho(-5.0, 5.0, -5.0, 5.0, -5.0, 5.0);

使用正交投影时,视图 space 坐标线性映射到剪辑 space 坐标。查看体积由 6 个距离(左、右、下、上、近、远)定义。 left、right、bottom、top、near 和 far 的值定义了一个长方体(盒子)。盒子体积内的所有几何体都被投影到二维视口上并且是“可见的”。此体积之外的所有几何体都被剪裁。