我认为这是一个非常愚蠢和新手的问题,但后来我成了图形和openGL的新手。绘制了一个球体并将光源放在附近,同时指定了环境光,我开始尝试光和材料值,得出一个令人惊讶的结论:我们用glColor*
指定的颜色在照明时根本不重要已启用。相反,等效物是材料的环境组件。这个结论是否正确?感谢
答案 0 :(得分:5)
如果启用了光照,那么代替顶点颜色,材质颜色 (好吧,颜色 - 其中有几种用于不同类型的光响应)被使用。材质颜色由glMaterial*
函数指定。
如果您想重复使用代码,可以使用glEnable(GL_COLOR_MATERIAL)
和glColorMaterial(GL_AMBIENT_AND_DIFFUSE)
让旧的glColor*
调用自动映射到素材颜色。
(请尽快切换到着色器 - 着色器方法既简单又强大)
答案 1 :(得分:3)
我想你还没有使用片段着色器。来自glprogramming.com:
vertex color = the material emission at that vertex + the global ambient light scaled by the materials ambient property at that vertex + the ambient, diffuse, and specular contributions from all the light sources, properly attenuated
所以是的,不使用顶点颜色。
编辑:您还可以在GL规范中查找GL闪电方程式(您附近有一个,是吗?^^)