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)