1、首先介紹一下glsl的資料型別,如果你學過c++,那麼一定不會陌生。
float double int uint bool型幾個資料型別;基本上從字面上就能理解這幾個資料型別的含義。
2、變數的使用與c++也是一樣,先宣告,再定義使用。包括全域性變數與區域性變數均與c++相同。
3、變數可在宣告時直接初始化。例如:
int i,o = 5;
如果是float 型別可在後面加上f或f,如果是double型別可在後面加上lf。
4、glsl幾乎不允許型別隱式轉換,例如:
int i = false;
這種寫法是錯的.
5、可以隱式轉換的型別包括轉換之後的型別有:
目的型別 源型別
uint int
float int,uint
double int,uint,float
6、對於需要型別轉換的型別可用強制型別轉換。
float i = 10.0;
int g = int(i);
7、在矩陣型別中mat4*3表示4列3行的矩陣,glsl中列優先。
(
1,2,3,4,5,6,7,8,9,
);
表示1 4 7
2 5 8
3 6 9.
8、呼叫向量或陣列中的乙個元素時,可使用或.的形式,例如:
float i = color.r;
int t = v.y;
float i = color[0];
int t = v[1];
上述兩種表述方式都可以。
9、glsl中的幾種表述方式:
position (x,y,z,w);
color (r,g,b,a);
texture coordinates(s,t,p,q);
10、glsl還提供一種特殊的賦值方式:
vec3 = color.rrr;
vec4 t = color.abgr;
vec4 q = m[4];
這兩種方式都可以,並且說明了glsl的表述方式;其中最後一句表示m的第四列賦值給q。
11、array,matrices和vectors都擁有乙個共同的方法,length();
C 基本語法學習(六)
抽象類和密封類 在定義類時可以使用abstract關鍵字宣告這個類是抽象的。抽象類不能被例項化,即不能建立抽象類的例項。抽象類的主要作用是充當其他類的基類。密封類的概念剛好與抽象類相對,這種類不能充當別的類的基類。密封 的概念是不可以從這個類派生出別的類。在定義類時用sealed關鍵字指明類是密封的...
C 基本語法學習(九)
c 中的介面 在c 中介面是一組公共方法或屬性的集合。介面可以被其他介面或是類繼承,但不能被例項化。1 介面中包含的屬性和方法都是公共的,不是繼承或是私有的。事實上,在c 中定義介面中的成員時,不允許顯示指定介面成員的可訪問性,而是自動預設為公共的。2 介面中只能包含普通方法或屬性,而不能包含其他內...
Flutter之Dart基本語法學習
宣告變數 var lll 預設值是null dynamic 宣告可以改變型別 使用final 和 const 進行修飾乙個常量 例 var number number 15 print number number 2 型別可變 print number final c 30 print c cons...