Вопрос

Я пытаюсь понять Molehill и хотелось бы нескольким вершинам двумя матрицами, скажем:

output = theVertex * scaleMatrix * rotationMatrix
.

Я предполагаю, что мой вершинский шейдер будет выглядеть что-то вроде:

"m44 vt0, va0, vc0\n" +
"mul op, vt0, vc1\n";
.

и я бы установил матрицы с

context3d.setProgramConstantsFromMatrix(Context3DProgramType.VERTEX, 0, scaleMatrix);
context3d.setProgramConstantsFromMatrix(Context3DProgramType.VERTEX, 1, rotationMatrix);
.

Но это не работает.Что я делаю не так?

Я знаю, что я могу несколько матрицу, прежде чем надевать шейдер, но я пытаюсь понять агал.

Приветствия

Это было полезно?

Решение

Генеракодицетагкод матрицы 4x4, это требует 4 регистров , поскольку каждый регистр 128bits (4 float), поэтому вы должны загрузить вашу матрицу поворота в регистр VC4:

"m44 vt0, va0, vc0\n" +
"mul op, vt0, vc4\n";
.


context3d.setProgramConstantsFromMatrix(Context3DProgramType.VERTEX, 0, scaleMatrix);
context3d.setProgramConstantsFromMatrix(Context3DProgramType.VERTEX, 4, rotationMatrix);
.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top