大二学生啊....这个学期学习了图形学,但老师就是主要讲图形学的算法那些的,没教过opengl,函数什么的都是自己在网上找的文档百科,可是现在图像出不来啊!!就这个框都是黑的!
#include<GL/glut.h>
static int day = 250;
void myDisplay(void) {
glutSolidSphere(1, 100, 100);
glEnable(GL_DEPTH_TEST);//启用深度测试,根据坐标的远近自动隐藏被遮住的图形
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);//清除缓冲区
glMatrixMode(GL_PROJECTION);//矩阵相乘操作,对投影矩阵应用随后的矩阵操作,与glLoadIdentity配合使用
glLoadIdentity();//重置当前指定的矩阵为单位矩阵.
gluPerspective(75, 1, 1, 400000000);//指定了观察的视景体在世界坐标系中的具体大小,角度,视景体的宽高比,观察的近处,观察的远处
glMatrixMode(GL_MODELVIEW);//当前矩阵为模型视图矩阵,模型视图矩阵储存了有关物体的信息
glLoadIdentity();
gluLookAt(0,-200000000,200000000,0,0,0,0,0,1);//定义视图矩阵,参数分别是眼睛的位置,眼睛朝向的位置,以及相机朝向的方向
//创建太阳
glColor3f(1.0f,1.0f,0.0f);//颜色函数,多次调用只显示最后一次的颜色
glutSolidSphere(69600000,100,100);//在窗口的中心点绘制一个太阳,(半径,经线,纬线),经纬线数目越多,效果越好
//绘制地球
glColor3f(0.0f, 0.0f, 1.0f);
glRotatef(day/360.0*360.0,0.0f,0.0f,-1.0f);//旋转功能,(角度,x,y,z)
glTranslatef(150000000,0.0f,0.0f);//平移功能
glutSolidSphere(159450000, 100, 100);
//绘制月亮
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, 100, 100);
glFlush();//强制刷新缓冲,保证绘图命令将被执行
glutSwapBuffers();//实现双缓存的重要函数
}
void myIdle(void) {
++day;
if (day > 366) {
day = 0;
}
myDisplay();
}
int main(int argc,char *argv[]) {
glutInit(&argc, argv);//初始化GLUT函数
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);//图形显示模式,双缓存
glutInitWindowPosition(100, 100);//窗口位置
glutInitWindowSize(450, 450);//窗口大小
glutCreateWindow("宇宙");//窗口名称
glutDisplayFunc(myDisplay);//窗口的回调函数
glutIdleFunc(myIdle);//设置空闲回调函数
glutMainLoop();//进入GLUT事件处理循环,让所有的与“事件”有关的函数调用无限循环
return 0;
}