OpenGL中创建聚光灯的效果
现在,我们使用如下的数组来指定一个光源的位置:
// 指定光源位置的数组
GLfloat lightPos[] = {0.0f, 0.0f, 75.0f, 1.0f};
// 设置光源0的位置
glLightfv(GL_LIGHT0,GL_POSITION,lightPos);
lightPos数组的最后一个值在此为1.0,它表示光源的实际位置就在(X,Y,Z)所表示的位置。在默认情况下,光线从这个位置均匀地向四周发射。如果我们把lightPos数组的最后一个值设为0.0,可以使光源看上去像是来自无限远处,并沿着向量(X,Y,Z)所指定的方向射入。这种看似来自无限远处的光源称为方向性光源,它会均匀地照射在物体的表面,它的所有光线都是平行的,是一种平行光。反之,对于位置性光源,光线会从光源处向不同方向发散开来。
接下来,我们通过设置一些参数,来实现聚光灯的效果,代码如下所示: