GLSL 有许多预定义的全局变量,例如 gl_LightSource
。它们是全局的,因为任何着色器都可以访问它们。
如何在 GLSL 中定义自定义全局变量?
最佳答案
GLSL 中不存在全局变量。 gl_*
变量是硬编码变量(将它们视为自动添加的编译时),用于从着色器访问管道的不可编程元素。在 Core OpenGL 3.0 中,其中大部分已被删除,包括 gl_LightSource
。现在,用户需要处理自己的矩阵和灯光,并将它们作为制服发送到着色器。如果您想查看所有剩余的列表,您应该查看 GLSL Reference Pages .
你想要的是制服。如果您想在着色器之间同步制服,请存储制服的位置并迭代所有程序以将制服上传到每个着色器。
关于opengl - GLSL 全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8691849/