我一直在用OpenGL编写程序。最近,我开始学习OpenGL着色语言。我是新手;所以请在答案中详细说明。
我的问题是:
我只熟悉从“顶点着色器”传递到片段着色器以在顶点之间进行插值的“变化”变量。除此之外,我什么都不知道。
答案 0 :(得分:21)
在OpenGL 3+中:
varying
已弃用const
用于......好吧,常量!uniform
适用于每次调用(最多)值in
用于来自前一个流水线阶段的输入,即每个原语的每个顶点(或每个片段)值,如果使用glAttribDivisor和硬件实例out
用于输出到下一阶段关于片段着色器的输出:在OpenGL3及更高版本中,片段着色器输出的大多数内置变量(例如gl_FragColor
,但有gl_FragDepth
的明显例外)已弃用,应该是替换为用户定义的out
变量。
如果要输出到默认的帧缓冲区,则无论您声明为片段着色器的输出,都会在颜色缓冲区中结束。如果您使用多个颜色缓冲区(即多个渲染目标)绑定了一个FBO,则需要通过out
手动将每个glBindFragDataLocationIndexed
变量绑定到正确的颜色缓冲区索引。
您可以找到关于GLSL('服务器')和OpenGL('客户')方面的所有详细信息:
答案 1 :(得分:3)
答案 2 :(得分:2)