OpenGL函数思考-glLight
函数原型:
void glLightf(GLenum light,GLenum pname,GLfloat param)
void glLighti(GLenum light,GLenum pname,GLint param)
参数说明:
-
light:指定光照。光照的数目取决于实现,但至少可以支持8个光照。分别为GL_LIGHT1到GL_LIGHT8
-
pname:指定light的光照参数。可以选择的值有GL_AMBIENT, GL_DIFFUSE, GL_SPECULAR, GL_POSITION, GL_SPOT_DIRECTION, GL_SPOT_EXPONENT, GL_SPOT_CUTOFF, GL_CONSTANT_ATTENUATION,GL_LINEAR_ATTENUATION, and GL_QUADRATIC_ATTENUATION
-
param:指定光源light的设置值指针
函数说明:
该函数设置单个光源的参数值.
- GL_AMBIENT:指定环境光。
- GL_DIFFUSE:指定漫射光。
- GL_SPECULAR:指定镜面光。
- GL_POSITION:指定光源位置。
- GL_SPOT_DIRECTION:指定光照方向。
- GL_SPOT_EXPONENT:指定聚焦光源指数。
- GL_SPOT_CUTOFF:指定光源的最大散布角。
- GL_CONSTANT_ATTENUATION,GL_LINEAR_ATTENUATION, GL_QUADRATIC_ATTENUATION :指定三个光照衰减因子。
注意:
只对光源进行设置、定位、甚至启用,光源都不会工作。除非我们启用GL_LIGHTING。
LightAmbient: array[0..3] of GLfloat = (0.5, 0.5, 0.5, 1.0); // 环境光参数
LightDiffuse: array[0..3] of GLfloat = (1.0, 1.0, 1.0, 1.0); // 漫射光参数
LightPosition: array[0..3] of GLfloat = (0.0, 0.0, 2.0, 1.0); //光源位置参数
glLightfv(GL_LIGHT1, GL_AMBIENT, @LightAmbient); // 设置环境光
glLightfv(GL_LIGHT1, GL_DIFFUSE, @LightDiffuse); // 设置漫射光
glLightfv(GL_LIGHT1, GL_POSITION,@LightPosition); // 设置光源位置
glEnable(GL_LIGHT1); // 启用一号光源 glEnable(GL_LIGHTING); // 启用光源