正文

(OPENGL编程指南第四版)OPENGL范例程序5.3(扩展版)2008-03-23 21:24:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/yuqiexing/33535.html

分享到:

// 范例P124.cpp : Defines the entry point for the console application.// #include "stdafx.h"#include <gl/glut.h> static int spin=0; void display(){ glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);     //清除所有像素  GLfloat light_position[]={5,5,10,1.0};//光源1位置  glPushMatrix(); glRotated((GLdouble)spin,1.0, 0.0, 0.0); glLightfv(GL_LIGHT0,GL_POSITION,light_position); glPopMatrix(); glLoadIdentity(); glTranslated(0,0,-3); glutSolidSphere(1.0,20,16); /*在缓存中绘制4对顶点坐标的矩形*/  glFlush();          //立即显示出来} void init(){ glClearColor(0.0,0.0,0.0,0.0);     //用黑色清除背景   GLfloat mat_specular[]={1.0, 1.0, 1.0, 1.0}; //材质镜面反射色 GLfloat mat_shininess[]={50.0};     //光洁度,即物体反射比率 GLfloat lmodel_ambient[]={0.2,0.2,0.2,1.0};  //全局环境光  //第一个光源 GLfloat light_position[]={5,5,10,1.0};   //光源1位置 GLfloat white_light[]={1.0,1.0,1.0,1.0};  //光源1散射光与镜面反射光相同  //第二个光源 GLfloat light1_diffuse[]={1.0, 0.0, 0.0, 1.0}; //光源2散射光 GLfloat light1_specular[]={1.0, 0.0, 0.0, 1.0}; //光源2镜面反射光 GLfloat light1_position[]={-2.0, -2.0, 3.0, 1.0};//光源2位置 GLfloat spot_direction[]={0.0, 0.0, 0.0};  //光源2聚光灯方向  glShadeModel(GL_SMOOTH); glMaterialfv(GL_FRONT,GL_SPECULAR,mat_specular); glMaterialfv(GL_FRONT,GL_SHININESS,mat_shininess);  //光源2设置 glLightfv(GL_LIGHT1,GL_DIFFUSE,light1_diffuse); glLightfv(GL_LIGHT1,GL_SPECULAR,light1_specular); glLightfv(GL_LIGHT1,GL_POSITION,light1_position); glLightf(GL_LIGHT1,GL_CONSTANT_ATTENUATION,1.5); glLightf(GL_LIGHT1,GL_LINEAR_ATTENUATION,0.5); glLightf(GL_LIGHT1,GL_QUADRATIC_ATTENUATION,0.2);  glLightf(GL_LIGHT1,GL_SPOT_CUTOFF,-45.0); glLightfv(GL_LIGHT1,GL_SPOT_DIRECTION,spot_direction); glLightf(GL_LIGHT1,GL_SPOT_EXPONENT,100);  //光源1设置 glLightfv(GL_LIGHT0,GL_POSITION,light_position); glLightfv(GL_LIGHT0,GL_DIFFUSE,white_light); glLightfv(GL_LIGHT0,GL_SPECULAR,white_light); glLightModelfv(GL_LIGHT_MODEL_AMBIENT,lmodel_ambient);  glEnable(GL_LIGHTING); glEnable(GL_LIGHT1); glEnable(GL_LIGHT0); glEnable(GL_DEPTH_TEST);} void reshape(int w,int h){ glViewport(0,0,(GLsizei)w,(GLsizei)h); glMatrixMode(GL

阅读(4845) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册