什么是OpenGL二级颜色有用?

时间:2017-09-05 15:48:24

标签: opengl

glSecondaryColor允许指定第二种颜色。这第二种颜色有用吗?

我检查了kronos reference并没有多大帮助:

  

对次要颜色进行插值并应用于每个片段   在光栅化期间启用GL_COLOR_SUM时。当照明是   启用,并指定GL_SEPARATE_SPECULAR_COLOR,该值为   辅助颜色分配从镜面术语计算的值   照明计算。初级和次级电流   颜色应用于每个片段,无论状态如何   GL_COLOR_SUM,在这种条件下。当GL_SEPARATE_SPECULAR_COLOR时   指定,查询当前辅助节点返回的值   颜色未定义。

这种二次色的东西甚至可能看起来像旧款GL版本的残羹剩饭......我错了吗?

1 个答案:

答案 0 :(得分:7)

在固定功能照明模型中,主要颜色和/或纹理颜色应用于漫反射光源高光照明。因此,不可能有一个闪亮的黑色表面,因为黑色原色/纹理颜色将成倍增加到镜面光照,使其实际上为零。

提供辅助颜色并启用GL_SEPARATE_SPECULAR_COLOR意味着镜面反射光值将乘以辅助颜色而不是原色。因此,您可以使用黑色主色/纹理颜色,辅助颜色为1.0。即使在表面的黑暗区域,这也可以让你拥有明亮的闪亮亮点。

当然,这是GL 3.1中丢弃的所有固定功能垃圾。使用着色器,您可以拥有可以编码的任何照明模型。