着色器语言学习推荐:3.0文档,对应opengl es 3.0(默认1.0 对应opengl es 2.0)
概述
着色器语法和c/C++类似
包括变量类型、关键字、修饰符、内嵌函数、内嵌特殊变量、内嵌常量、宏、预处理指令等主要内容
如果是做游戏开发,写shader脚本,上面内容都要精通;但是不做游戏开发,知道变量类型,关键字,修饰符,和一些特殊内嵌特殊变量就可以了;因为你也不需要写复杂的shader脚本。。。
对于有语言基础的,上述都很容易学习;就算忘记了,看一遍就ok了
特别注意
1、着色器版本(好像不同版本不兼容最好遵守各自语法)
#version 300 es 或者不声明
3.0中一个程序必有一个vetex shader 和一个fragment shader组成,且它们版本必须一致
2、变量赋值
变量构造器赋值
变量不可隐式转换,使用构造器转换
3、layout 限定符
直接指定location,不需要opengl es查找位置
4、out 和in
vetex shader 的out 要在fragment shader 中同样定义(out --> in)
5、fragment shader需要设置精度
percision mediump float 所有float类型精度设这
mediump float a 变量a精度
6、shader 内嵌变量
以gl_开始
gl_Position : vetex shader中的vetex 位置
简单示例
我是一个android开发者,所以这里在AS写时,需要安装shader插件;这个插件只能提示语法错误,变量可以不存在,方法也可以不存在。。。
shader 编写
main函数,当shader被编译后,执行的主体
layout 定义了索引
in 输入
out 输出
gl_ 开头的 : 系统内嵌变量