glSecondaryColor允许指定第二种颜色.这第二种颜色有用吗?
我已经检查了kronos参考,它没有多大帮助:
当启用GL_COLOR_SUM时,在光栅化期间对次要颜色进行插值并应用于每个片段.启用光照并指定GL_SEPARATE_SPECULAR_COLOR时,将为辅助颜色的值指定根据光照计算的镜面反射项计算的值.在这种条件下,无论GL_COLOR_SUM的状态如何,主要和次要当前颜色都应用于每个片段.指定GL_SEPARATE_SPECULAR_COLOR时,查询当前辅助颜色返回的值未定义.
这种二次色的东西甚至可能看起来像旧款GL版本的残羹剩饭......我错了吗?
在固定功能照明模型中,主要颜色和/或纹理颜色应用于漫反射照明和镜面反射照明.因此,不可能有一个闪亮的黑色表面,因为黑色原色/纹理颜色将成倍增加到镜面光照,使其实际上为零.
提供二次色和启用GL_SEPARATE_SPECULAR_COLOR意味着镜面反射光值将乘以二次色而不是原色.因此,您可以使用黑色主色/纹理颜色,辅助颜色为1.0.即使在表面的黑暗区域,这也可以让您拥有明亮的闪亮亮点.
当然,这是GL 3.1中丢弃的所有固定功能垃圾.使用着色器,您可以拥有可编码的任何照明模型.