0
//my triangle
let vertdata =
[| new Vector3(-1.0f, -1.0f,0.0f)
new Vector3(1.0f, -1.0f,0.0f)
new Vector3(0.0f, 1.0f,0.0f) |]
//VertexShader
..
uniform mat4 mview;
...
gl_Position = mview * vec4(vPosition, 1.0);
..
Вынесено с матрицей идентичности он выглядит какНеожиданный результат при вращении треугольника
mview = Matrix4.Identity
, как и ожидалось.
mview = Matrix4.CreateTranslation(Vector3(0.0f,1.0f,0.0f))
В переводе на 1 в у. Но если я поверну его на 90 °, это как-то переводится в направлении х.
mview = Matrix4.CreateTranslation(Vector3(0.0f,1.0f,0.0f))
* Matrix4.CreateRotationZ(toRad(90.0f))
Любая идея, почему он делает это? Если я сделаю математику в своей голове, это должно быть.
Matrix4.CreateRotationZ(toRad(90.0f))
* Vector3(0.0f, 1.0f,0.0f) = Vector3(-1.0f, 0.0f,0.0f)
Matrix4.CreateTranslation(Vector3(0.0f,1.0f,0.0f))
* Vector3(-1.0f, 0.0f,0.0f) = Vector3(-1.0f, 1.0f,0.0f)
//but it seems to be Vector3(-2.0f, 0.0f,0.0f)
Мое предположение: вам нужно изменить порядок совмещения матриц. – thumbmunkeys
@ thumbmunkeys О ... да, ты прав. Я могу поклясться, что я попробовал это 2 мин назад. благодаря –