opengl - GLSL 全局变量

标签 opengl glsl global shader

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

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

最佳答案

GLSL 中不存在全局变量。 gl_* 变量是硬编码变量(将它们视为自动添加的编译时),用于从着色器访问管道的不可编程元素。在 Core OpenGL 3.0 中,其中大部分已被删除,包括 gl_LightSource。现在,用户需要处理自己的矩阵和灯光,并将它们作为制服发送到着色器。如果您想查看所有剩余的列表,您应该查看 GLSL Reference Pages .

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

关于opengl - GLSL 全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8691849/

相关文章:

c++ - OpenGL - 渲染到单 channel 纹理?

python - 全局变量和函数...以及 Kivy (Python 2.7.10) (Kivy 1.9.1)

memory - 达到理论 GPU 全局内存带宽

static - 如何在没有赋值的情况下声明静态可变变量?

c# - 试图设置 VBO :s in C# using TAO and OpenGL TK framework

delphi - OpenGL:如何将 2D 形状车床成 3D?

c - 简单的平面 segmentation 着色器

opengl - 使用着色器更改纹理某些片段的颜色

opengl - 全屏纹理采样的最佳方法

opengl - GLSL 片段着色器平面被视为动态统一表达式?