glLightf 函数

glLightf 函数返回光源参数值。

语法

void WINAPI glLightf(
   GLenum  light,
   GLenum  pname,
   GLfloat param
);

参数

light

灯的标识符。 可能的光数取决于实现,但至少支持八个灯。 它们由形式 GL_LIGHTi 的符号名称标识,其中 i 是一个值:0 到 GL_MAX_LIGHTS - 1。

pname

光的单值光源参数。 接受以下符号名称。

含义
GL_SPOT_EXPONENT
参数是一个浮点值,用于指定光的强度分布。 浮点值是直接映射的。 仅接受 [0, 128] 范围内的值。
有效光强度由光的方向与从光到被点亮顶点的方向之间的角度的余弦衰减,并提升到点指数的幂。 因此,无论光点截止角度如何,高点指数都会产生更聚焦的光源。 默认的点指数为 0,因此光分布均匀。
GL_SPOT_CUTOFF
参数是一个浮点值,用于指定光源的最大扩散角度。 浮点值是直接映射的。 仅接受 [0, 90] 范围内的值和特殊值 180。
如果光的方向与从光线到点亮顶点的方向之间的角度大于聚光截断角,则光线将完全蒙蔽。 否则,其强度由点指数和衰减因子控制。 默认的点截止为 180,因此光线分布均匀。
GL_CONSTANT_ATTENUATION、GL_LINEAR_ATTENUATION、GL_QUADRATIC_ATTENUATION
参数是一个浮点值,用于指定三个光衰减因子之一。 浮点值是直接映射的。 仅接受非否定值。
如果光是位置的,而不是方向的,则其强度由 的倒数之和衰减:常数因子、线性因子乘以光与被点亮顶点之间的距离,以及二次因数乘以相同距离的平方。 默认衰减因子 (1,0,0) ,不会导致衰减。

param

指定将光源的参数 pname 设置为的值。

返回值

此函数不返回值。

错误代码

glGetError 函数可以检索以下错误代码。

名称 含义
GL_INVALID_ENUM
lightpname 不是接受的值。
GL_INVALID_VALUE
在 [0, 128] 范围之外指定了点指数值,或指定了除特殊值 180 () 之外的 [0, 90] 范围之外指定了点截止值,或者指定了负衰减因子。
GL_INVALID_OPERATION
函数是在 对 glBegin 的调用和对 glEnd 的相应调用之间调用的。

备注

glLightf 函数设置单个光源参数的值。 light 参数将 light 命名为 light,是 GL_LIGHTi 形式的符号名称,其中 0 = i< GL_MAX_LIGHTS。

pname 参数再次按符号名称指定一个光源参数。 param 参数是单个值或指向包含新值的数组的指针。

使用带参数GL_LIGHTING 的 glEnableglDisable 启用和禁用照明计算。 启用照明后,已启用的光源将参与照明计算。 使用 glEnableglDisable 启用和禁用光源 i,参数GL_LIGHTi

始终GL_LIGHTi = GL_LIGHT0 + i

以下函数检索与 glLightf 函数相关的信息:

glGetLight

带参数GL_LIGHTING的 glIsEnabled

要求

要求
最低受支持的客户端
Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器
Windows 2000 Server [仅限桌面应用]
标头
Gl.h

Opengl32.lib
DLL
Opengl32.dll

另请参阅

glBegin

glColorMaterial

glEnd

glLightModel

glMaterial