这一个星期刚用D3D实现了一个简单的渲染框架,写视点管理的时候,发现移动视点,看到的场景画面却是以常识相反的画面移动的。跟踪了一下发现逻辑和函数没问题,就考虑是否是D3D本身的问题。发现果然D3D坐标系跟OGRE或者OpenGL不同,D3D是用左手坐标系,而另两者是用右手坐标系的,导致同样说把相机朝向Z轴时,以不同坐标系观察X坐标是相反的。引用一张图:
于是解决了。
还必须注意的其他几点(此部分转自他人):
d3d 中矩阵采用行主序, opengl 的矩阵采用列主序
注意:由于 C 语言的数组本来就是行主序的,所以在 opengl 中,刚开始时候有点不适应,不过向量和矩阵在数学上本来就经常以列来描述,所以在数学上是比较适应的。
在 <