光源基础
glEnable(GL_LIGHTING)
开启光的使用glEnable(GL_LIGHT0)
使用第一个光,在OpenGL中默认有8个light可以使用
DirectionLight
- 平行光最重要的属性是位置。可以通过下面的代码设置:
1 | float LightPos[] = { 0.0f,1.0f,0.0f,0.0 }; |
- glLightfv可以用来设置光对象的各种属性,比如环境光、漫反射、高光等属性
1 | glLightfv(GL_LIGHT0, GL_AMBIENT, whiteColor); |
PointLight
- 点光源的基本参数
- 从图中也可以看出来有三个属性,分别是
1 | // 注意此处w的值是1 |
SpotLight
- 如图所示,探照灯中最重要的是三个属性:
- 朝向
- 聚光度(exponent),某个范围内光是不衰减的
- 范围(cutoff),超出了就不收光的影响
- 后面两个是角度
1 | glLightfv(mLightIdentifier, GL_SPOT_DIRECTION, dir); |
总结
- 其实从
GL.h
这个头文件就可以看到OpenGL中光的基本操作,从这些define中就可以看到前四个是光的基本属性,同时适用于平行光。聚光度和点光源各有自己的属性。
1 | /* LightParameter */ |
- 支持的光源
1 | /* LightName */ |
- 目前还没学习到的
1 | #define GL_LIGHT_MODEL_LOCAL_VIEWER 0x0B51 |