1.创建光源
void glLightfv (GLenum light, GLenum pname, const GLfloat *params); //创建指定的光源,light可以是GL_LIGHT0、GL_LIGHT1,pname定义的是光源的属性,它指定了一个命名参数。params表示表示pname属性将要被设置的值pname和params的值
实例
GLfloat light_position[] = { 0, 0, 10, 0.0 }; glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); glLightfv(GL_LIGHT0, GL_POSITION, light_position);
GLfloat light_ambient[] = { 0, 1, 1, 1 }; glEnable(GL_LIGHTING); glEnable(GL_LIGHT1); glLightfv(GL_LIGHT1, GL_AMBIENT, light_ambient);//设置光的环境强度
GLfloat light_diffuse[] = { 0, 0, 0, 1 }; glEnable(GL_LIGHTING); glEnable(GL_LIGHT1); glLightfv(GL_LIGHT1, GL_DIFFUSE, light_diffuse);//散色光,GL_LIGHT0默认为(1,1,1,1)GL_LIGHT1-7默认为(0, 0, 0, 1)
GLfloat light_diffuse[] = { 1, 1, 1, 0 }; glEnable(GL_LIGHTING); glEnable(GL_LIGHT1); glLightfv(GL_LIGHT1, GL_SPECULAR, light_diffuse);//镜面光GL_LIGHT0默认为(1,1,1,1)GL_LIGHT1-7默认为(0, 0, 0, 1
方向性光源:平行的光,如太阳光,不考虑衰减
位置性光源,如台灯,考虑衰减
GLfloat light_position[] = { 1.0, 1.0, 1.0, 1 }; //最后一个参数为0,说明是方向性光源,非0则为位置性光源
GLfloat spot_position[] = { -1.0, -1.0, 0}; glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); glLightf(GL_LIGHT0, GL_SPOT_CUTOFF, 45);//设置聚光灯的角度 glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, spot_position);//指定聚光灯的方向
《高效学习OpenGL》 之 创建光源 glLightfv()
原文:http://blog.csdn.net/biggbang/article/details/19486411