4

我认为这是一个非常愚蠢和新手的问题,但是我是图形和openGL的新手。绘制了一个球体并在附近放置了一个光源,同时还指定了环境光,我开始尝试使用光和材质值并得出一个令人惊讶的结论:glColor*启用照明时,我们指定的颜色根本不重要。相反,等效的是材质的环境组件。这个结论正确吗?谢谢

4

2 回答 2

5

如果启用了照明,则使用材质颜色 (嗯,颜色——其中有几种用于对光的不同类型的响应)而不是顶点颜色。材质颜色由glMaterial*函数指定。

如果你想重用你的代码,你可以使用glEnable(GL_COLOR_MATERIAL)andglColorMaterial(GL_AMBIENT_AND_DIFFUSE)让你的旧glColor*调用自动映射到材质颜色。

(并且请尽快切换到着色器 - 着色器方法更容易且更强大)

于 2010-11-13T13:35:41.367 回答
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 闪电方程(附近有一个,对吗?^^)

于 2010-11-13T13:30:20.073 回答