0

我对 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.0and 1.0,但每次我得到不同的结果时,我没有初始化该列。有谁知道默认值是什么?

4

1 回答 1

4

默认值是“未定义”,就像在 C 中一样。换句话说,它可以是在分配矩阵之前该内存单元中的任意值,因为分配不会以任何其他方式清除或初始化单元。在以一种标准方式使用矩阵之前,您应该始终初始化矩阵的所有元素。

于 2012-05-07T14:43:41.957 回答