0

私はOpenGLESに非常に慣れていないので、いくつかのシェーダーを試してみています。私の質問は、マトリックス内のいくつかの値を初期化するときですが、すべてではありませんが、デフォルト値は何ですか?ゼロになると思いましたが、フラグメントシェーダーで次のコードを使用しています。

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.04番目の列をとに設定しようとしました1.0が、列を初期化しなかったときとは異なる結果が得られるたびに。誰かがデフォルト値が何であるか知っていますか?

4

1 に答える 1

4

デフォルト値は、C の場合と同様に「未定義」です。つまり、割り当ては他の方法でセルをクリアまたは初期化しないため、マトリックスが割り当てられる前にそのメモリ セルにあった任意の値にすることができます。標準的な方法で使用する前に、常に行列のすべての要素を初期化する必要があります。

于 2012-05-07T14:43:41.957 に答える