Я пытаюсь перенести эти шейдеры GLSL на Stage3D и AGAL, но не могу заставить его работать:
Вершинный шейдер (GLSL)
attribute vec3 aVertexPosition;
attribute vec4 aVertexColor;
uniform mat4 uMVMatrix;
uniform mat4 uPMatrix;
varying vec4 vColor;
void main(void) {
gl_Position = uPMatrix * uMVMatrix * vec4(aVertexPosition, 1.0);
vColor = aVertexColor;
}
Фрагментный шейдер (GLSL)
precision mediump float;
varying vec4 vColor;
void main(void) {
gl_FragColor = vColor;
}
Получив в результате:
Вершинный шейдер (AGAL)
mov vt0.w, vc0.x
mov vt0.xyz, va0.xyz
mov vt1.xyzw, vc1
mul vt5.xyzw, vt1, vc5
m44 op.xyzw, vt0.xyzw, vt5
mov v0.xyzw, va1.xyzw
Фрагментный шейдер (AGAL)
mov oc.xyzw, v0.xyzw
Вот след инструкций, которые я выполняю:
(setVertexBufferAt) va0 3 0
(setVertexBufferAt) va1 4 3
(identity setProgramConstantsFromMatrix): vc0 1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1
(setProgramConstantsFromMatrix) vc1 1,0,0,0,0,1,0,0,0,0,1,0,0,0,-2,1
(setProgramConstantsFromMatrix) vc5 1.8106601238250732,0,0,0,0,2.4142136573791504,0,0,0,0,-1.0020020008087158,-1,0,0,-0.20020020008087158,0
render drawTriangles + present
Но я все еще ничего не вижу.
Обновление: видимо проблема в том, что треугольник обрезается. Значения в умноженном массиве больше 1.0, что делает их вырезанными. Поэтому мне нужно найти способ нормализовать матрицу или расширить отсечение
Любое предложение?