openGL之API学习(一七八)glsl版本功能演变

Posted hankern

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了openGL之API学习(一七八)glsl版本功能演变相关的知识,希望对你有一定的参考价值。

GLSL 120 增加

1,你可以在着色器中初始化数组,如下所示:

1

2

float a[5] = float[5](3.4, 4.2, 5.0, 5.2, 1.1);

float b[5] = float[](3.4, 4.2, 5.0, 5.2, 1.1);

然而,即使使用GLSL 120,Mac OSX Snow Leopard也不支持上述功能。

2,你可以在着色器中初始化全局变量,并且值将在链接时设置:

1

uniform float val = 1.0;

3,在设置const值时,可以使用像sin()这样的内置函数;

4,必要时,整数会隐式转换为浮点数,例如:

1

2

3

float f = 1.0; <-- valid

float g = 1; <-- only supported in GLSL 120

vec2 v = vec2(1, 2.0); <-- only supported in GLSL 120

5,你可以用f来定义一个浮点数:float f = 2.5f。

GLSL 130 增加

1,支持int和uint(以及它们的按位操作);

2,支持switch语句;

3,新的内置函数:trunc(),round(),roundEven(),isnan(),isinf(),modf();

4,片段输出可以是用户定义的;

5,输入和输出用in和out语法声明,替代属性和变化。

GLSL 150 增加

1,现在应该使用texture(),替代texture2D()。

GLSL330 增加

1,布局限定符可以声明顶点着色器输入和片段着色器输出的位置,例如:

1

layout(location = 2) in vec3 values[4];

形式上这只能通过ARB_explicit_attrib_location扩展来实现。

以上是关于openGL之API学习(一七八)glsl版本功能演变的主要内容,如果未能解决你的问题,请参考以下文章

openGL之API学习(一七三)glsl如何设置版本和兼容性

openGL之API学习(一七六)GLSL变量类型uniform attribute varying in out

openGL之API学习(一七二)error C0000: syntax error, unexpected identifier, expecting “::“ at token “mediump“

openGL之API学习(一七零)glEnableClientState glDisableClientState

openGL之API学习(一七五)如何查看显卡支持了多少OpenGL扩展

openGL之API学习(一七一)glMaterial