VC 2008 OpenGL太阳地球月亮模型运行后无效果,该如何解决

VC 2008 OpenGL太阳地球月亮模型运行后无效果

环境没有问题,运行后只能看到黑框!
#include <GL/glut.h> 

static int day = 50; // day  的变化:从0 到359 

void myDisplay(void) 



glEnable(GL_DEPTH_TEST); 

glClear(GL_COLOR_BUFFER_BIT  | GL_DEPTH_BUFFER_BIT); 

glMatrixMode(GL_PROJECTION); 

glLoadIdentity(); 

gluPerspective(75, 1, 1, 400000000); 

glMatrixMode(GL_MODELVIEW); 

glLoadIdentity(); 

gluLookAt(0, -200000000, 200000000, 0, 0, 0, 0, 0, 1); 
// 绘制红色的“太阳” 

glColor3f(1.0f, 0.0f, 0.0f); 

glutSolidSphere(69600000, 20, 20); 

// 绘制蓝色的“地球” 

glColor3f(0.0f, 0.0f, 1.0f); 

glRotatef(day/360.0*360.0, 0.0f, 0.0f, -1.0f); 

glTranslatef(150000000, 0.0f, 0.0f); 

glutSolidSphere(15945000, 20, 20); 

// 绘制黄色的“月亮” 

glColor3f(1.0f, 1.0f, 0.0f); 

glRotatef(day/30.0*360.0 - day/360.0*360.0, 0.0f, 0.0f, -1.0f); 

glTranslatef(38000000, 0.0f, 0.0f); 

glutSolidSphere(4345000, 20, 20); 

glFlush(); 

}
int main(int argc, char *argv[])


glutInit(&argc, argv); 

// GLUT_SINGLE:单缓冲;GLUT_DOUBLE:双缓冲
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE/* | GLUT_SINGLE*/); 

glutInitWindowPosition(250, 200); 

glutInitWindowSize(400, 400); 

glutCreateWindow("太阳地球月亮"); 

glutDisplayFunc(&myDisplay); 

glutMainLoop(); 

return 0; 


运行后的效果图:

------解决思路----------------------
gluPerspective(75, 1, 1, 400000000); 和glutSolidSphere(4345000, 20, 20); 这两个函数的问题,你设置的修剪区可见的范围是[-1,-4000000000],但是你画的球体是在原点画的,因此你的球体是在视见区外面画的,你试试平移下坐标轴再画球体。或者画画其他的东西在[-1,-4000000000]整个范围进行绘制。
PS: 你的代码太乱了,虽然是测试性质,但是你的有些代码不该在某些函数中写。
------解决思路----------------------
glEnable(GL_DEPTH_TEST);前添加glDepthFunc(GL_LEQUAL);试试