我是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.0
和1.0
,但每次我得到不同的结果时,我都没有初始化列。有谁知道默认值是什么?
答案 0 :(得分:4)
默认值为“undefined”,就像在C中一样。换句话说,它可以是在分配矩阵之前在该存储器单元中的任意值,因为分配不会以任何其他方式清除或初始化单元。在以标准方式之一使用矩阵之前,应始终初始化矩阵的所有元素。