Opengl 旋转三角形时出现意外结果

Opengl 旋转三角形时出现意外结果,opengl,opentk,Opengl,Opentk,使用它看起来像的单位矩阵进行渲染 //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); ..

使用它看起来像的单位矩阵进行渲染

//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

在y中由1翻译。但如果我把它旋转90度,它会朝x方向移动

mview = Matrix4.CreateTranslation(Vector3(0.0f,1.0f,0.0f))

知道为什么会这样吗?如果我在脑子里算算的话,那应该是

mview = Matrix4.CreateTranslation(Vector3(0.0f,1.0f,0.0f))
        * Matrix4.CreateRotationZ(toRad(90.0f))

你需要颠倒组合矩阵的顺序。

你需要颠倒组合矩阵的顺序。

你需要颠倒组合矩阵的顺序。

你需要颠倒组合矩阵的顺序。

你需要颠倒组合矩阵的顺序。

我猜你需要颠倒组合矩阵的顺序我的拇指钥匙哦。。。是的,你说得对。我发誓我两分钟前就试过了。谢谢,我猜你需要颠倒组合矩阵的顺序。@thumbmunkeys哦。。。是的,你说得对。我发誓我两分钟前就试过了。谢谢,我猜你需要颠倒组合矩阵的顺序。@thumbmunkeys哦。。。是的,你说得对。我发誓我两分钟前就试过了。谢谢,我猜你需要颠倒组合矩阵的顺序。@thumbmunkeys哦。。。是的,你说得对。我发誓我两分钟前就试过了。谢谢
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)