程序:glsl:glsl
GLSL
变量
bool/int/float/(b/i/[])vec(2/3/4)/mat(2/3/4)
-
数组只能声明1维
语法
没有隐式转换,赋值左右类型必须一致
强制类型转换和
C不太一样:int x=int(1.0);
主函数为main函数,名称可改,返回值需要是void
不支持递归
操作
精度
lowp:低精度
mediump:中间精度
highp:高精度
所以浮点数只有float,没有double
在最开始可以设定全局的精度:precision mediump float;
精度描述符在变量限制符之后
内置变量
变量限制符号
none:本地变量,一般不写
const:常量类型
attribute:只能用于顶点着色器中,一般表示顶点数据
uniform:全局变量,对于Shader只读,一般用于传递数据
varying:从顶点着色器传递到片段着色器的变量
只能使用一个
函数参数限定
in:按值传递,不修改原值
out:不可读只可写,修改原值
inout
关闭优化
关闭所有变量的优化:#pragma STDGL invariant(all)(预处理)
关闭某个变量的优化:invariant varying texCoord;(限定符)
描述符的顺序
eg1:invariant varying lowp float color;(变量)
eg2:void doubleSize(const in lowp float s){}(参数)
预处理
C语言中的宏还可以一样地使用
指定编译的版本(写在最前):#version 100
行号:__LINE__
版本:__VERSION__
Odt笔记(20221007)
/var/www/DokuWikiStick/dokuwiki/data/pages/程序/glsl/glsl.txt · Last modified: 2022/10/07 09:29 by zh