GLSL全局变量

Kev*_*lan 5 opengl shader global glsl

GLSL有许多预定义的全局变量,例如gl_lightsource.它们是全局的,因为任何着色器都可以访问它们.

如何在GLSL中定义自定义全局变量?

Rob*_*ani 6

GLSL中不存在全局变量.的gl_*变量是硬编码的变量(将它们看作自动添加编译时)来访问从着色器管线的不可编程元件.在Core OpenGL 3.0中,大多数都被删除了,包括gl_LightSource.现在希望用户处理他自己的矩阵和灯光并将它们作为制服发送到着色器.如果您想查看剩余的所有列表,您应该查看GLSL参考页面.

你想要的是制服.如果要在着色器之间同步制服,请存储制服的位置并迭代所有程序以将制服上载到每个着色器.


Arn*_*rne 5

您可以使用统一缓冲区。这是一个教程:http : //www.lighthouse3d.com/tutorials/glsl-tutorial/uniform-b​​locks/