2012-05-07 64 views
0

我對OpenGL ES非常陌生,我正在嘗試使用一些着色器。我的問題是,當我初始化矩陣中的某些值時,但不是全部,默認值是什麼?我以爲這會是零,但是我用我的片段着色器下面的代碼:OpenGL ES問題 - 應該簡單嗎?

highp vec4 c = texture2D(inputImageTexture, textureCoordinate) ; 

highp mat4 m; 

m[0] = vec4(1.0); 
m[1] = vec4(1.0); 
m[2] = vec4(1.0); 

c = m * c; 

gl_FragColor = c; 

顯然,陣列的最後一欄尚未初始化。爲了確保m最後一列中的所有值都爲零,我添加了行m[3] = vec4(0.0);,並得到了不同的結果。我已經嘗試將第四列設置爲255.01.0,但每當我得到不同的結果時,然後當我沒有初始化列。有誰知道默認值是什麼?

+0

GLSL在這方面的行爲與C沒有任何區別。由於這是一個合理的行爲(假設你熟悉C和朋友),你可以很容易從你的測試中推斷出來。 –

回答

4

默認值爲「未定義」,就像在C中一樣。換句話說,它可以是在分配矩陣之前在該存儲單元中的任意值,因爲分配不以任何其他方式清除或初始化單元。在使用標準方式之前,應始終初始化矩陣的所有元素。