Во-первых, вот рабочая версия для перевода: https://jsfiddle.net/zhenghaohe/5yc8exo3/4/
(код взят и изменен с https://webgl2fundamentals.org/webgl/lessons/webgl-2d-matrices.html)
В рабочей версии кода переводматрица
[
1, 0, 0,
0, 1, 0,
tx, ty, 1,
]
, которая является транспонированной матрицей перевода, преподаваемой в моем классе графики. В моем классе матрица перевода представлена как
[
1, 0, tx,
0, 1, ty,
0, 0, 1,
]
Я пытался выяснить, гдевозникло несоответствие. Поэтому я решил изменить вершинный шейдер рабочей версии с отправки матрицы перевода из js-файла, подобного этому
uniform mat3 u_matrix;
void main() {
// Multiply the position by the matrix.
vec2 position = (u_matrix * vec3(a_position, 1)).xy;
}
, до построения матрицы перевода непосредственно в вершинном шейдере
uniform float tx;
uniform float ty;
void main() {
mat3 u_matrix = mat3( 1, 0, tx,
0, 1, ty,
0, 0, 1,);
vec2 position = (u_matrix * vec3(a_position, 1)).xy;
...}
Вот модифицированная версия https://jsfiddle.net/zhenghaohe/5yc8exo3/
Однако, похоже, есть ошибка,
Unchecked runtime.lastError: Could not establish connection. Receiving end does not exist.
webgl-utils.js:67 *** Error compiling shader '[object WebGLShader]':ERROR: 0:18: ')' : syntax error
Может кто-нибудь указать мне, где измененная версия кода невернаи почему существует несоответствие матрицы перевода?