OpenGL ES 中 GLSL Shader常见属性说明

OpenGL ES 中 GLSL Shader常见属性说明

目录

关键字

attribute

attribute修饰的变量是只能在vertex shader中使用

一般用attribute变量来表示一些顶点的数据,如:顶点坐标,法线,纹理坐标,顶点颜色等

在application中,一般用函数glBindAttribLocation()来绑定每个attribute变量的位置,然后用函数glVertexAttribPointer()为每个attribute变量赋值

uniform

可在vertex和fragment中使用

uniform修饰的变量是外部application程序传递给shader的变量

通过函数glUniform**()函数赋值

在shader程序内部,uniform修饰的变量就像是C语言里面的常量,它不能被shader程序修改

如果uniform修饰的变量在vertex和fragment两者之间声明方式完全一样,则它可以在vertex和fragment共享使用(相当于一个被vertex和fragment shader共享的全局变量)

uniform修饰的变量一般用来表示:变换矩阵,材质,光照参数和颜色等信息

varying

varying是vertex和fragment shader之间做数据传递用的

一般vertex shader修改varying修饰的变量的值,然后fragment shader使用该varying修饰的变量的值

因此varying变量在vertex和fragment shader二者之间的声明必须是一致的

application不能使用此变量

precision

用于定义数据精度

举例:precision mediump float;//使用中等精度的浮点数

lowp , mediump , heighp

浮点数精度定义时使用

举例:precision heighp float;//使用中等精度的浮点数

类型

vec4

一个具备4个分量的向量(x,y,z,w)
默认值:

x = 0;

y = 0;

z = 0;

w = 1;

mat4

一个4*4矩阵类型

属性和变量

gl_Position

vec4类型

着色器的最终顶点

gl_PonitSize

float 类型 , 表示点的大小

glPointColor

顶点的颜色

gl_FragColor

片段着色器的颜色

参考链接

OpenGL ES2.0 的三种变量类型(uniform,attribute和varying)

猜你喜欢

转载自blog.csdn.net/dqh147258/article/details/79803156