java - 没有 gl_LightSource[0] 的照明

标签 java opengl graphics glsl lwjgl

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/

相关文章:

delphi - 如何将滚动条位置转换为 Gamma 校正?

Java:将用户输入的变量从一种方法调用到另一种方法

Java - 两个并排的网格

java - Opengl如何在缩放投影矩阵的同时平移光标位置

algorithm - 如何动态地将时间放置在时钟中?

c++ - 如何从 ID3DXEffect 获取所有着色器常量(统一)?

java - Proguard 与 Maven

Java - 字符串的自定义排序ArrayList

OpenGL 填充多边形颜色 "bleeding"

opengl - 纹理 alpha channel 在 opengl 中不起作用