在gl_LightSource[0].position.xyz
中撰写时,GLSL
相当于什么?换句话说,我如何在vec3
中使用vec4
(或GLSL
}并对OpenGL应用于gl_LightSource[0].position
应用相同的转换?我可以使用mat4
吗?
答案 0 :(得分:2)
你可以做任何你喜欢的事。这是着色器的好处。为自己定义一套描述灯光的制服。它的位置可能在你想要的任何空间,你只需要以某种方式应用正确的转换。
着色器都是自由选择,你可以做任何最适合你的事。固定功能OpenGL在眼睛/视图空间中进行照明计算,即在模型视图变换之后。为此,当您调用glLightfv(GL_LIGHT…, GL_POSITION, …)
时,它会立即使用模型视图转换灯光位置。然后在绘制几何图形时,在应用了模型视图变换之后,在视图空间中执行照明计算。