Я пишу некоторый код webgl в дротике, и я отрисовываю некоторые спрайты на экране.webgl rotating quads выглядит некорректно
У меня есть один квад, который я использую для рендеринга всех спрайтов. У меня есть проекция, представление и модельная матрица. Я использую матрицу вида для камеры, которая, как я полагаю, правильна, хотя поворот должен был быть сделан на матрице проекции, потому что вращение матрицы представления приводило к неправильным результатам.
Я хочу повернуть квадрат по отдельности. Все мои попытки привели к неправильным результатам.
Это сцена без вращения применяется
Это GIF сцены с вращением применяется в течение долгого времени из приведенной ниже коды.
Вращение выглядит нормально, но если мы будем двигаться в стороны,
мы совершенно ясно видим, что ось г, кажется, игнорируется или что-то в этом роде.
Это мой объект матрица в методе моего квадратора класса делает приращение переменной
objectMatrix.setIdentity();
objectMatrix.translate(pos.x - w/2.0, pos.y - h * 1.0, pos.z * 1.0);
objectMatrix.scale(w * 1.0, h * 1.0, 0.0);
objectMatrix.rotateY(tick * PI/180); // rotate over time
gl.uniformMatrix4fv(objectMatrixLocation, false, objectMatrix.storage);
клещом каждый раз, когда мы визуализировать сцену
вершинный шейдер
precision highp float;
attribute vec3 a_pos;
uniform mat4 u_projectMatrix;
uniform mat4 u_viewMatrix;
uniform mat4 u_objectMatrix;
uniform mat4 u_textureMatrix;
varying vec2 v_texcoord;
varying float v_dist;
varying vec4 v_pos;
void main() {
v_texcoord = (u_textureMatrix * vec4(a_pos, 1.0)).xy;
v_pos = vec4(u_projectMatrix * u_viewMatrix * vec4(a_pos, 1.0));
vec4 pos = u_projectMatrix * u_viewMatrix * u_objectMatrix * vec4(a_pos, 1.0);
v_dist = 1.0 - pos.z/2.75; //for fragment shader's fade in the back stuff
gl_Position = pos;
}
Похоже, у вас есть операция сдвига, а не вращение. В какой библиотеке классов Matrix вы используете? Векторная математика МакКутчана? –
Да, я не думаю, что это проблема с кодом его фреймворка, хотя –