Как перенести такое вычисление:AGAL: m44 вместо Matrix3D.append()
var a : Matrix3D = ...
var b : Matrix3D = ...
a.append(b);
в шейдер?
Мой текущий подход:
setProgramConstantsFromMatrix(VERTEX, 0, a, true);
setProgramConstantsFromMatrix(VERTEX, 4, b, true);
"mov vt0, vc0\n" +
"mov vt1, vc1\n" +
"mov vt2, vc2\n" +
"mov vt3, vc3\n" +
"m44 vt4, vc4, vt0\n"
производят неправильные результаты в VT4. Что я делаю не так?
Хорошо, когда вы используете a.append (b); вы получаете новую матрицу. И когда вы используете m44, вы получаете вектор. В качестве источника должен быть вектор. http://help.adobe.com/en_US/as3/dev/WSd6a006f2eb1dc31e-310b95831324724ec56-8000.html – nikitablack
Действительно, похоже, что Volgogradetzzz прав. Примерно на треть пути вниз по этой странице ... http://www.adobe.com/devnet/flashplayer/articles/what-is-agal.html есть диаграмма. Проверьте описание m44, и он говорит, что он принимает матрицу и 4-компонентный вектор (компонент - это x, y, z или w). Он не может умножить две матрицы. – moosefetcher