opengl GLSL基本語法 學習 隨筆二

2021-06-27 06:26:03 字數 1257 閱讀 6674

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...