【发布时间】:2015-01-22 07:33:25
【问题描述】:
我已经设置了一个包含定向光的非常基本的片段着色器。我正在尝试使用这种定向光照亮单个四边形,一切似乎都按预期工作,但我有一个问题:这个平面四边形的两侧是否应该受到定向光的影响?
当旋转相机时,我注意到四边形的背面和前面一样亮。这应该发生还是应该只点亮四边形的一侧?
【问题讨论】:
标签: opengl
我已经设置了一个包含定向光的非常基本的片段着色器。我正在尝试使用这种定向光照亮单个四边形,一切似乎都按预期工作,但我有一个问题:这个平面四边形的两侧是否应该受到定向光的影响?
当旋转相机时,我注意到四边形的背面和前面一样亮。这应该发生还是应该只点亮四边形的一侧?
【问题讨论】:
标签: opengl
这很正常,因为四边形的背面与正面是“相同的四边形”。它们具有相同的法线,因此照明给出相同的结果。如果你不想要这个,有两个解决方案:
在您的片段着色器中,测试gl_FrontFacing。如果它是假的,否定正常。它可以在没有分支的情况下完成,如下所示:
正常 = gl_FrontFacing ?正常:-正常;
【讨论】:
? 运算符意味着一个分支。它基本上只是if 语句的快捷方式。