【问题标题】:OpenGL ambient lightOpenGL环境光
【发布时间】:2011-08-23 12:31:55
【问题描述】:

构建了一个非常简单的 OpenGL 程序,该程序由一个中心纹理立方体组成,其顶点/法线值分别为 +/-1.0,我有两个关于固定管道照明模型行为的问题。

1) 为什么我将全局环境光设置为 {1.0, 1.0, 1.0, 1.0} 时我的对象没有完全照亮。我本来希望这些设置能够像禁用照明一样渲染模型(即所有表面都以全强度渲染)。

2) 当我将漫反射光直接放在模型前面 {0.0, 0.0, 2.0} 处时,一切看起来都可以正确渲染,但是如果我将灯光移到 {0.0, 0.0, 200.0} 处,模型会渲染好像照明已被禁用(即所有表面都以全强度渲染)。

【问题讨论】:

    标签: opengl


    【解决方案1】:

    由于您没有发布实际的设置代码,所以我只能猜测。

    1:环境光强度由环境表面颜色调制。如果您没有正确设置材质,则该值将与漫反射表面颜色相同。当然,由于您没有发布代码,我不能说您是否正确。

    2:我需要查看正在发生的事情的渲染,但这可能是由于没有任何类型的强度衰减造成的。实际上,随着光线越来越远,它看起来更亮,因为the normals are more likely to be closer to facing it than if it is close to the surface。点光源在移开时变为定向光源。所以你需要使用衰减。

    【讨论】:

    • 感谢尼科尔的回答。关于环境光强度,你能给我一个光/材质值的例子,它会使立方体看起来好像光被禁用了; {1.0, 1.0, 1.0, 1.0} 两者都可以吗?无论环境光值如何,材质值 {0.0, 0.0, 0.0, 1.0} 是否会将立方体渲染为黑色?
    • 很多个“材质值”;你具体指的是哪一个?
    • 假设我没有定义光源,并通过 glLightModel 命令将全局环境光设置为 {1.0, 1.0, 1.0, 1.0}。 {1.0, 1.0, 1.0, 1.0} 的环境计量值会起作用吗?
    猜你喜欢
    • 1970-01-01
    • 2018-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-09
    • 1970-01-01
    • 2010-09-26
    • 2019-06-15
    相关资源
    最近更新 更多