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)所指定的方向射入。这种看似来自无限远处的光源称为方向性光源,它会均匀地照射在物体的表面,它的所有光线都是平行的,是一种平行光。反之,对于位置性光源,光线会从光源处向不同方向发散开来。
接下来,我们通过设置一些参数,来实现聚光灯的效果,代码如下所示:
// 指定光源的位置和光照值

本文介绍了在OpenGL中创建聚光灯效果的步骤,包括设置光源位置、光照值,以及利用GL_SPOT_CUTOFF调整聚光角度。通过示例代码展示了如何启用光照计算、颜色追踪,以及设置材料属性以达到理想的光照效果。尽管顶点光照存在一定的局限性,但通过着色器可以进一步提升光照的自然度。完整代码已上传至GitHub供参考。
最低0.47元/天 解锁文章
1171





