OpenGL ES基础-(3)GLSL之语句

1、GLSL操作符与优先级

操作符描述
()用于表达式组合,函数调用,构造
[]数组下标,向量或矩阵的选择器
.结构体和向量的成员
++ --前缀或后缀的自增自减操作符
+ - !一元操作符 表示正 负 逻辑非
*  /乘 除操作符
+ -二院操作符 表示加 减操作
< > <= >= == !=判断符 小于 大于 小于等于 大于等于 等于 不等于
&& || ^^逻辑与 或 异或
?:条件判断符
= += -= *= /=赋值运算符
表示序列

2、操作符重载

例如:向量与矩阵之间的乘法

vec3 v;

mat3 m;

vec3 r=v*m; //注意:矩阵和向量的维度必须匹配!

3、控制流

if(){}else{}

switch(){

case:break;

default:break;

}

4、循环语句

for(int i=0;i<10;i++){}

while(){}

do{}while();

5、流控制语句

break;

return;

continue;

discard:丢弃当前片元,终止片元着色器执行(只能在片元着色器中使用,只要运行到该语句,那片元着色器就会立即终止)

6、函数声明

    a、函数声明,变量名必须添加访问修饰符;

    b、GLSL支持用户自定义函数,同时它定义了一些内置函数

    c、函数名称可以是任何字符、数字、下划线,但不能使用数字、连续下划线以及gl_作为函数的开始

    d、返回值可以是任何类型的GLSL类型,或者用于定义的结构体和数组类型

    e、返回值是数组是,必须现实的指定大小。函数返回类型为void则没有返回值

    f、函数的参数也可以是任何类型的函数,包括数组(这里的数组必须设置大小)

    g、在使用一个函数前必须声明他的原型或者直接给出函数体。

    h、GLSL的编译器在使用函数前必须找到函数的声明,否则会产生错误

    i、函数原型只是给出了函数的形式,但是并没有给出具体的实现内容

6、案例:

unifrom mat uMVPMatrix;//总变化矩阵

attribute vec3 aPosition;//顶点数据

attribute vec2 atexCoor;//纹理数据

varying vec2 vTextureCood;//传递片元着色器的变量

void positionShift(){

    gl_Position=uMVPMatrix*vec4(aPosition,1);

}

void main(){

    //主函数

    positionShift();

    vTextrueCoord=aTexCoor;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值