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/ 有统一变量(所有线程均为静态) 属性变量(按顶点注入) 变化(如您所知)     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...