OpenGl程序小问题

[复制链接]
查看11 | 回复4 | 2021-1-27 06:27:17 | 显示全部楼层 |阅读模式
一个简单的太阳,地球,月亮转动动画程序,代码如下:
#include
staticintday=200;//day的变化:从0到359
voidmyDisplay(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();
glutSwapBuffers();
}
voidmyIdle(void)
{
/*新的函数,在空闲时调用,作用是把日期往后移动一天并重新绘制,达到动画效果*/
++day;
if(day>=360)
day=0;
myDisplay();
}
intmain(intargc,char*argv[])
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE);//修改了参数为GLUT_DOUBLE
glutInitWindowPosition(100,100);
glutInitWindowSize(400,400);
glutCreateWindow("太阳,地球和月亮");//改了窗口标题
glutDisplayFunc(&myDisplay);
glutIdleFunc(&myIdle);//新加入了这句,在CPU空闲时调用myIdle函数
glutMainLoop();
return0;
}
运行无错误,但是弹出的窗口为黑屏,求解???
结果如下图:


分 -->
回复

使用道具 举报

千问 | 2021-1-27 06:27:17 | 显示全部楼层
我只会且只能回复:
搜网络教程“学OpenGL编3D游戏”。


回复

使用道具 举报

千问 | 2021-1-27 06:27:17 | 显示全部楼层
glut太老了可能,我用freeglut编译的也是只有一片黑,我也想过这个,生成球的顶点的时候没搞好,后来就不理了,可以去看看
https://github.com/McNopper/GLUS
这个里面的例子好像也有类似的,然后他是包装的glfw成类似glut的,然后还有生成基本形状的函数
回复

使用道具 举报

千问 | 2021-1-27 06:27:17 | 显示全部楼层
搞错了,例子是在
https://github.com/McNopper/OpenGL
这里面
为啥这里不给编辑帖子的
回复

使用道具 举报

千问 | 2021-1-27 06:27:17 | 显示全部楼层
引用3楼ynsenyu的回复:搞错了,例子是在
https://github.com/McNopper/OpenGL
这里面
为啥这里不给编辑帖子的

好的,我看看,谢了


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行