矢量構造函數
GLSL ES 提供了豐富靈活的方式來建立矢量,比如:
//将v3設為(1.0, 0.0, 0.5)vec3 v3 = vec3(1.0, 0.0, 0.5);
//使用v3的前兩個元素,v2為(1.0, 0.0)
vec2 v2 = vec2(v3);
//将v4設為(1.0, 1.0, 1.0, 1.0)
vec4 v4 = vec4(1.0);
複制
還可以将多個矢量組合成一個矢量,比如:
//将v4設為(1.0, 0.0, 1.0, 1.0)vec4 v4b = vec4(v2, v4);
複制
這裡的規則是先把第一個參數v2中的所有元素填充進來,如果還未填滿,就繼續用第2個參數v4中的元素填充。
矩陣構造函數
需要注意矩陣中的元素是按照列主序排列的,看下面幾個例子顯示使用了矩陣構造函數的不同方式。
- 使用矩陣構造函數mat4()傳入每一個元素的數值
mat4 m4 = mat4(1.0, 2.0, 3.0, 4.0,
5.0, 6.0, 7.0, 8.0,
9.0, 10.0, 11.0, 12.0,
13.0, 14.0, 15.0, 16.0);
複制
對應的矩陣:

- 向矩陣傳入一個或多個矢量,注意它是列主序排列
vec2 v2_1 = vec2(1.0, 3.0);
vec2 v2_2 = vec2(2.0, 4.0);
mat2 m2_1 = mat2(v2_1, v2_2);
複制
對應的矩陣:
- 向矩陣構造函數中傳入矢量和數值,同樣按照注列主序傳入
// 使用兩個浮點數和一個vec2
mat2 = mat2(1.0, 3.0, v2_2);
複制
- 向矩陣構造函數中傳入單個數值,對角線上元素都是該數值,其它元素為0.0
mat4 m4 = mat4(1.0);
複制
如果傳入的數值元素大于1個,又沒達到矩陣元素的數量就會出錯,如下:
mat4 m4 = mat4(1.0, 2.0, 3.0); // 錯誤,mat4需要16個元素
複制