Hello Shader
GLSL 最后输出为 gl_FragColor 为一个四维向量(vector4)
这个四维向量 分别为 R G B A
#ifdef GL_ES
precision mediump float;
#endif
void main() {
gl_FragColor = vec4(1.0,0.0,1.0,1.0);
}
R G B 分别对应了屏幕中的红 绿 蓝
A指的是Alpha通道 也就是透明度
变量
对于c语言中 有 int float char 等等变量类型
对于Glsl 有向量类型 vec4 vec4 vec2 这些统称为浮点向量
除去浮点向量 Glsl还提供了 int float bool 类型
define
在mian之前 我们使用了与c语言类似的宏定义 与c语言相同 都是进行预编译处理
precision(精度) 第二行表示讲默认精度设置为 mediump float(中等精度)
当然此处也可以使用 low float(低精度) 与 highp float(高精度)
此处的精度在shader中极为重要 越低的精度代表了越快的渲染速度 此时就是以质量为代价
Tips
glsl的语言规范中不会保证变量类型的自动转换 如果使用以下代码 就有可能会出错
void main() {
gl_FragColor = vec4(1,0,0,1); // 出错
}
你也可以在glsl中写入与c语言类似的函数
vec4 red(){
return vec4(1.0,0.0,0.0,1.0);
}