2

Apress の Beginning WebGl for HTML5 を読んで webgl の学習を始めました。次の実装を持つ mat4.translate 関数を使用する場合、行列演算を処理するために gl-matrix.js を推奨しています。

mat4.translate = function (out, a, v) {
    var x = v[0], y = v[1], z = v[2],
    a00, a01, a02, a03,
    a10, a11, a12, a13,
    a20, a21, a22, a23;

if (a === out) {
    out[12] = a[0] * x + a[4] * y + a[8] * z + a[12];
    out[13] = a[1] * x + a[5] * y + a[9] * z + a[13];
    out[14] = a[2] * x + a[6] * y + a[10] * z + a[14];
    out[15] = a[3] * x + a[7] * y + a[11] * z + a[15];
} else {
    a00 = a[0]; a01 = a[1]; a02 = a[2]; a03 = a[3];
    a10 = a[4]; a11 = a[5]; a12 = a[6]; a13 = a[7];
    a20 = a[8]; a21 = a[9]; a22 = a[10]; a23 = a[11];

    out[0] = a00; out[1] = a01; out[2] = a02; out[3] = a03;
    out[4] = a10; out[5] = a11; out[6] = a12; out[7] = a13;
    out[8] = a20; out[9] = a21; out[10] = a22; out[11] = a23;

    out[12] = a00 * x + a10 * y + a20 * z + a[12];
    out[13] = a01 * x + a11 * y + a21 * z + a[13];
    out[14] = a02 * x + a12 * y + a22 * z + a[14];
    out[15] = a03 * x + a13 * y + a23 * z + a[15];
}

return out;

};

次の呼び出しで

mat4.translate(mvMatrix,[0, 0, -2.0]);  

vec3 v コンポーネントを割り当てようとすると、「未定義のプロパティ 0 を読み取れません」というエラーが表示されます。

それについて何か助けはありますか?よろしく

4

4 に答える 4

3

gl-matrix の新しい API を更新します。

mat4.perspective(pMatrix, 45, canvas.width / canvas.height, 0.1, 100.0);                                                               
mat4.identity(mvMatrix);                                     
mat4.translate(mvMatrix, mvMatrix, [0, 0, -2.0]);
于 2013-12-21T16:19:08.260 に答える
3

この本で使用されている glMatrix のバージョンはおそらく1.3.7ですが、最近リリースされたバージョンは 2.1.0 です。2.0 の時点で、インターフェースは一貫性を保つために変更されており、本の内容とは一致しません。

最新かつ最高の glMatrix を使用する場合は、ドキュメントを参照して正しいパラメーターを取得する必要があります。それ以外の場合は、1.3.7 をダウンロードして、本の説明に従って使用してください。

于 2013-03-01T15:41:23.667 に答える
0

はい、最新の glmatrix.min.js で同じ問題が発生しました。しかし、 https://www.versioneye.com/javascript/toji:gl-matrix/1.3.7から ver 1.3.7 を使用し たら解決しました。

于 2016-09-02T07:39:08.523 に答える