Projection matrix from OpenGL to DirectX

两盒软妹~` 提交于 2019-12-12 01:00:40

问题


I have an application which uses openGL and i have to port it to DirectX. To sum up my issue : How can I port a rotation matrix based on a right-handed coordinate system to a left-handed coordinate system ?

This is what i found on MSDN:

  • Flip the order of triangle vertices so that the system traverses them clockwise from the front. In other words, if the vertices are v0, v1, v2, pass them to Direct3D as v0, v2, v1.

  • Use the view matrix to scale world space by -1 in the z-direction. To do this, flip the sign of the _31, _32, _33, and _34 member of the D3DMATRIX structure that you use for your view matrix.

This works fine except I cannot flip easily my vertices because I got an 3D model from CATIA which is not a primitive, so I can't use it.

(I'm aware of row-major and column-major difference, it does not matter)

Do you know how I can port my rotation matrix from openGL to DirectX ?


回答1:


Regarding the handedness of your underlying coordinate system and a given rotation transformation, the positive rotation in a right-handed coordinate system is determined by the right-hand rule and vice versa. So, if you have two coordinate systems with a different handedness by flipping the sign in front of the rotation angle you have adjusted the rotation matrix. You have ported your rotation matrix :)



来源:https://stackoverflow.com/questions/15497429/projection-matrix-from-opengl-to-directx

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!