这个OpenGL照明是否按预期工作?

时间:2015-01-21 20:54:25

标签: opengl

我已经设置了一个包含定向灯的基本片段着色器。我试图使用这种定向光点亮一个四边形,一切似乎按预期工作但我有一个问题:这个扁平四边形的两边是否应该受到定向光的影响?

当旋转相机时,我注意到四边形的背面和前面一样明亮。如果发生这种情况,或者只应点亮四极的一个侧?

1 个答案:

答案 0 :(得分:0)

这是正常的,因为四边形的背面是与正面“相同的四边形”。它们具有相同的法线,因此照明会产生相同的结果。如果你不想要这个,有两个解决方案:

  1. 启用背面剔除。你不会再看到背面了。如果你需要看一些东西,画另一个四边形,但朝向另一个方向。
  2. 在片段着色器中,测试gl_FrontFacing。如果它是假的,否定正常。它可以在没有分支的情况下完成:

    normal = gl_FrontFacing? normal:-normal;