在GLSL
中编写时,gl_LightSource[0].position.xyz
相当于什么?换句话说,我如何在GLSL
中获取vec3
(或vec4
)并对其应用与OpenGL应用于相同的转换>gl_LightSource[0].position
?有我可以使用的 mat4
吗?
最佳答案
你可以做任何你喜欢的事。这就是着色器的好处。为自己定义一套描述光的制服。它的位置可以在您想要的任何空间,您只需要以某种方式应用正确的转换。
着色器都是自由选择的,你可以做最适合你的事情。固定函数 OpenGL 在眼睛/ View 空间中进行照明计算,即在模型 View 变换之后。为此,它会在您调用 glLightfv(GL_LIGHT..., GL_POSITION, ...)
时使用模型 View 转换光源位置。然后在绘制几何体时,在应用模型 View 变换后,在 View 空间中执行照明计算。
关于java - 没有 gl_LightSource[0] 的照明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15733319/