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