代码之家  ›  专栏  ›  技术社区  ›  Armen Tsirunyan

基本OpenGL照明问题

  •  4
  • Armen Tsirunyan  · 技术社区  · 14 年前

    我认为这是一个非常愚蠢和新手的问题,但我是一个图形和openGL新手。画了一个球体,在附近放了一个光源,也有指定的环境光,我开始对光和材质值进行实验,得出了一个令人惊讶的结论:我们指定的颜色 glColor* 启用照明时完全无所谓。相反,等效的是材质的环境组件。这个结论正确吗?谢谢

    2 回复  |  直到 14 年前
        1
  •  5
  •   Kos    14 年前

    如果启用了照明,则不使用顶点颜色, 材料颜色 (好吧,颜色-有几种不同的颜色对光的反应) 使用。材质颜色由指定 glMaterial* 功能。

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

    (请尽快切换到材质球-材质球方法更简单,也更强大)

        2
  •  3
  •   alxx    14 年前

    我想你还没有使用碎片着色器。从 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闪电方程(你附近有一个,是吗?^^)