如何解决OpenGL着色语言不同类型的变量限定符
|| 我一直在使用OpenGL编写程序。最近,我开始学习OpenGL Shading Language。我是新手;因此,请在您的答案中详细说明。 我的问题是: GLSL中有哪些不同类型的变量(限定符)? 它们是用来干什么的? 它们彼此之间有何不同? 我只熟悉从顶点着色器传递到片段着色器以在顶点之间进行插值的“ varying”变量。除此之外,我一无所知。解决方法
在OpenGL 3+中:
varying
已弃用
const
代表...好吧,常数!
uniform
表示每次抽奖(最多)值
如果使用glAttribDivisor和硬件实例化,则in
用于来自上一个管道阶段的输入,即最多每个顶点(或每个片段)值,每个图元
out
输出到下一级
关于片段着色器的输出:在OpenGL3及更高版本中,不赞成使用片段着色器输出的大多数内置变量(例如gl_FragColor
,但值得注意的是gl_FragDepth
除外),应将其替换为用户定义的out
变量。
如果要输出到默认帧缓冲区,则您声明为片段着色器的输出的任何内容都将在颜色缓冲区中结束。如果您将FBO与多个颜色缓冲区(即多个渲染目标)绑定在一起,则需要通过glBindFragDataLocationIndexed
将每个out
变量手动绑定到正确的颜色缓冲区索引。
可以找到有关GLSL(\'server \')端和OpenGL(\'client \')端的所有详细信息:
在OpenGL规范中,特别是第248-250页用于片段着色器上的颜色缓冲区输出。
有关着色器输出的信息,请参见GLSL规范的第38页及以后。
,
统一:每个绘制调用的常数数据,通常用于参数化着色器。
变化:在VS和FS之间传输数据,并在过程中沿原语进行插值。
属性:这是顶点属性数据,是顶点着色器的输入。它是为图元中的每个顶点指定的。
, 检查教程:http://www.lighthouse3d.com/tutorials/glsl-tutorial/
有统一变量(所有线程均为静态)
属性变量(按顶点注入)
变化(如您所知)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。