平民程序 - linghuye's blog

天下风云出我辈,一入江湖岁月催。皇图霸业谈笑中,不胜人生一场醉。提剑跨骑挥鬼雨,白骨如山鸟惊飞。尘事如潮人如水,只笑江湖几人回。

随笔 - 221, 文章 - 0, 评论 - 680, 引用 - 0
数据加载中……

在纹理之后应用辅助颜色

在一般状态下,当把一个纹理应用于一个片断时,只有主颜色与纹理单元的颜色进行了组合.主颜色可能是光照计算的结果,也可能是通过glColor*()函数指定的值.

在纹理处理之后,但在进行雾计算之前,可以对片断应用一种辅助颜色.辅助颜色的应用可以使经过纹理贴图的物体具有更真实的高光效果.

如果当前并没有启用光照,并且启用了颜色求和模式(使用glEnable(GL_COLOR_SUM)),那么当前的辅助颜色(由glSecondaryColor*()所设置)便被加到经过纹理处理后的片断颜色上.

纹理操作是在光照之后进行的,但把镜面亮点和纹理的颜色进行混合通常会减弱光照的效果. 可以为每个顶点计算两种颜色:一种是主颜色,由所有的非镜面成分组成,另一种是辅助颜色,由所有的镜面成分组成的和.如果把镜面颜色分离来,辅助(镜面)颜色就会在纹理计算之后再添加到片断中.

如果当前启用了光照,就会应用辅助镜面颜色,而不管是否为GL_COLOR_SUM模式,并且glSecondaryColor*所设置的任何辅助颜色都会被忽略.

摘自《OpenGL编程指南》第5版,随手翻看时觉得很有体会,摘下以备忘,WoW里的高光应该就是用SecondaryColor实现的.SecondaryColor相当于一层额外的纹理层.

DM引擎转入实现室内环境,有卡马克的Quake3引擎源码在手,应该不会有太陡的阻力,并借此机会深入学习一下大师的编码和思想.

posted on 2006-08-16 22:58 linghuye 阅读(707) 评论(2)  编辑 收藏 引用 所属分类: 3D图形学研究

评论

# re: 在纹理之后应用辅助颜色  回复  更多评论   

哦,真是高手能看出来东西!

我买的是《OpenGL编程指南》第4版,不知你有没有看过.你觉得,第四版与第五

版有什么大的差别吗?现在看第四版会不会"落后"~?
2006-08-22 13:06 | 长城

# re: 在纹理之后应用辅助颜色  回复  更多评论   

第4版没看过,最早买的第3版学习Opengl,翻译的很让我难受.
我个人觉得这第5版的翻译质量很好,排版也好.
2006-08-22 19:41 | 平民程序
只有注册用户登录后才能发表评论。