glMaterialiv 函数

glMaterialiv 函数指定照明模型的材料参数。

语法

void WINAPI glMaterialfv(
         GLenum face,
         GLenum pname,
   const GLint  *params
);

参数

正在更新的人脸。 必须是下列项之一:GL_FRONT、GL_BACK或GL_FRONT和GL_BACK。

pname

正在更新的人脸或人脸的 material 参数。 可以使用 glMaterialiv 指定的参数及其通过照明公式的解释如下所示。

含义
GL_AMBIENT
params 参数包含四个整数值,用于指定材料的环境 RGBA 反射率。 整数值是线性映射的,以便最正的可表示值映射到 1.0,而最负的可表示值映射到 -1.0。 浮点值是直接映射的。 整数值和浮点值均不固定。 正面和背面材料的默认环境反射率 (0.2、0.2、0.2、1.0) 。
GL_DIFFUSE
params 参数包含四个整数值,用于指定材料的漫射 RGBA 反射率。 整数值是线性映射的,以便最正的可表示值映射到 1.0,而最负的可表示值映射到 -1.0。 浮点值是直接映射的。 整数值和浮点值均不固定。 正面和背面材料的默认漫射反射率 (0.8、0.8、0.8、1.0) 。
GL_SPECULAR
params 参数包含四个整数值,用于指定材料的反射率 RGBA 反射率。 整数值是线性映射的,以便最正的可表示值映射到 1.0,而最负的可表示值映射到 -1.0。 浮点值是直接映射的。 整数值和浮点值均不固定。 正面和背面材料的默认反射率 (0.0、0.0、0.0、1.0) 。
GL_EMISSION
params 参数包含四个整数值,用于指定材料的 RGBA 发出的光强度。 整数值是线性映射的,以便最正的可表示值映射到 1.0,而最负的可表示值映射到 -1.0。 浮点值是直接映射的。 整数值和浮点值均不固定。 正面和背面材料的默认发射强度为 (0.0、0.0、0.0、1.0) 。
GL_SHININESS
param 参数是一个整数,用于指定材料的 RGBA 反射指数。 直接映射整数值。 仅接受 [0, 128] 范围内的值。 正面和背面材料的默认反射指数为 0。
GL_AMBIENT_AND_DIFFUSE
等效于使用相同参数值调用 glMaterial 两次,一次使用 GL_AMBIENT,一次使用 GL_DIFFUSE。
GL_COLOR_INDEXES
params 参数包含三个整数值,用于指定环境照明、漫射照明和反射照明的颜色索引。 这三个值和GL_SHININESS,是颜色索引模式照明公式使用的唯一材料值。 有关颜色索引照明的讨论,请参阅 glLightModel

params

参数GL_SHININESS将设置为的值。

返回值

此函数不返回值。

错误代码

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

名称 含义
GL_INVALID_ENUM
facepname 不是接受的值。
GL_INVALID_VALUE
指定了 [0, 128] 范围之外的反射指数。

备注

glMaterialiv 函数将值分配给材料参数。 有两组匹配的材料参数。 第一个是 正面 集,用于在) 禁用双面照明时 (点、线条、位图和所有多边形着色,或者在启用双面照明时仅 (正面多边形) 。 另一个集( 背面)仅在启用双面照明时,才用于为背面多边形着色。 有关单面和双面照明计算的详细信息,请参阅 glLightModel

glMaterialiv 函数采用三个参数。 第一个 指定是修改GL_FRONT材料、GL_BACK材料还是同时修改GL_FRONT_AND_BACK材料。 第二个 pname 指定将修改一个或两个集中的多个参数中的哪一个。 第三个 参数指定要分配给指定参数的值。

材料参数用于可选择性地应用于每个顶点的照明等式中。 该公式在 glLightModel 中进行了讨论。

可以随时更新材料参数。 具体而言, glMaterialiv 可以在对 glBegin 的调用和对 glEnd 的相应调用之间调用。 但是,如果每个顶点只更改一个材料参数, 则 glColorMaterial 优先于 glMaterialiv

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

glGetMaterial

要求

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

Opengl32.lib
DLL
Opengl32.dll

另请参阅

glColorMaterial

glLight

glLightModel