OpenGL和XNA矩阵的差异

OpenGL和XNA矩阵的差异,opengl,matrix,xna,porting,Opengl,Matrix,Xna,Porting,XNA在BasicFect下有以下矩阵对象 public Matrix World public Matrix View public Matrix Projection OpenGL对glMatrixMode()使用以下定义 老实说,我不太清楚为什么一个会比另一个拥有更多。我正在移植一个GL游戏,如果我能得到一个相同点和不同点的解释,那就太好了 是World=GL\U MODELVIEW,还是View=GL\U MODELVIEW 要渲染同一场景,我该怎么做,只需将一个单位矩阵加载到我不使用

XNA在BasicFect下有以下矩阵对象

public Matrix World
public Matrix View
public Matrix Projection
OpenGL对glMatrixMode()使用以下定义

老实说,我不太清楚为什么一个会比另一个拥有更多。我正在移植一个GL游戏,如果我能得到一个相同点和不同点的解释,那就太好了

是World=GL\U MODELVIEW,还是View=GL\U MODELVIEW

要渲染同一场景,我该怎么做,只需将一个单位矩阵加载到我不使用的单位矩阵中


非常感谢

GL_MODELVIEW的名称反映了这样一个事实,即它同时表示场景的视图和应用于世界的变换,因为这些变换是相反的(向左平移摄影机5个单位等于向右平移世界5个单位)。我不确定XNA的矩阵代表什么,但我认为XNA只是将这些转换表示为两个不同的矩阵。为了移植游戏,您需要让相机将其变换应用于视图矩阵,其他东西将变换应用于模型矩阵。(如果我错了,请纠正我。)


描述XNA矩阵表示的内容。

可以执行。。我想如果有一种方法可以将GL的方法包装在XNA周围,并从我引用的两个矩阵中创建额外的矩阵(如果可能的话),那就太好了。。。我的直觉告诉我可以,但我的大脑告诉我,“……如果你想合并视图矩阵和世界矩阵,那么将视图乘以模型矩阵(按该顺序)应该是可行的(从那时起,首先应用相机变换)。XNA可能不喜欢这样,但是,我想我需要的是让我的代码继续使用两个矩阵堆栈,并以与GL相同的方式显示,通过分别创建世界矩阵。。我将尝试一些方法并向您汇报。在openGL的XNA中,矩阵的乘法顺序与之相反。openGL使用列主矩阵,XNA使用行主矩阵。这其中一个奇怪但有趣的分支是以适当的顺序将它们连接起来的相反性质。在XNA中,您通常会编写:矩阵modelView=modelMatrix*viewMatrix;我不确定你是不是真的这么想的,但是我想我应该指出这一点。此外,如果您打算在xna中使用内置的“BasicFect”,那么您必须将这两个矩阵分别传递给效果,因此将它们组合在一起是没有意义的。
GL_MODELVIEW
GL_PROJECTION