|
|
- // 定义太阳光源,它是一种白色的光源
- {
- GLfloat sun_light_position[] = {0.0f, 0.0f, 10000.0f, 1.0f};
- GLfloat sun_light_ambient[] = {0.0f, 0.0f, 0.0f, 1.0f};
- GLfloat sun_light_diffuse[] = {1.0f, 1.0f, 1.0f, 1.0f};
- GLfloat sun_light_specular[] = {1.0f, 1.0f, 1.0f, 1.0f};
- qglLightfv(GL_LIGHT0, GL_POSITION, sun_light_position); //指定0号光源的位置[]
- qglLightfv(GL_LIGHT0, GL_AMBIENT, sun_light_ambient); //GL_AMBIENT表示各种光线照射到该材质上,
- //经过很多次反射后最终遗留在环境中的光线强度(颜色)
- qglLightfv(GL_LIGHT0, GL_DIFFUSE, sun_light_diffuse); //漫反射后~~
- qglLightfv(GL_LIGHT0, GL_SPECULAR, sun_light_specular);//镜面反射后~~~
- qglEnable(GL_LIGHT0); //使用0号光照[]
- qglEnable(GL_LIGHTING); //在后面的渲染中使用光照[]
- qglEnable(GL_DEPTH_TEST); //这句是启用深度测试,这样,在后面的物体会被挡着,例如房子后面有棵树,如果不启用深度测试,[]
- //你先画了房子再画树,树会覆盖房子的;但启用深度测试后无论你怎么画,树一定在房子后面(被房子挡着)[]
- }
- // 定义太阳的材质并绘制太阳
- {
- GLfloat sun_mat_ambient[] = {1.0f, 1.0f, 1.0f, 1.0f};
- GLfloat sun_mat_diffuse[] = {1.0f, 1.0f, 1.0f, 1.0f};
- GLfloat sun_mat_specular[] = {1.0f, 1.0f, 1.0f, 1.0f};
- GLfloat sun_mat_emission[] = {1.0f, 1.0f, 1.0f, 1.0f};
- GLfloat sun_mat_shininess = 0.0f;
- qglMaterialfv(GL_FRONT, GL_AMBIENT, sun_mat_ambient); //定义材料前面采用 多次反射[]
- qglMaterialfv(GL_FRONT, GL_DIFFUSE, sun_mat_diffuse); //材料的前面为 漫反射[]
- qglMaterialfv(GL_FRONT, GL_SPECULAR, sun_mat_specular); //定义材料的前面为 镜面反射
- qglMaterialfv(GL_FRONT, GL_EMISSION, sun_mat_emission); //定义材料的前面为 镜面指数
- qglMaterialf (GL_FRONT, GL_SHININESS, sun_mat_shininess); //材料的前面采用的颜色[]
-
- //glutSolidSphere(2.0, 40, 32);// 绘制一个球体[] gl/glut.h
- }
复制代码 |
|