将DirectX顶点转换为OpenGL顶点
我有一个完整的顶点数据文件,它是从使用DirectX的软件导出的。现在我想用它在食人魔中创建一个网格。自从我使用Xcode在Mac上开发以来,我就将Ogre设置为使用OpenGL 我的问题是如何将这些顶点转换为与OpenGL兼容的顶点 例如,如果我有此格式的DirectX顶点: DirectX顶点顶点DX={x,y,z} 在OpenGL顶点中它会是什么样子: OpenGLVertexGL=将DirectX顶点转换为OpenGL顶点,opengl,directx,ogre,Opengl,Directx,Ogre,我有一个完整的顶点数据文件,它是从使用DirectX的软件导出的。现在我想用它在食人魔中创建一个网格。自从我使用Xcode在Mac上开发以来,我就将Ogre设置为使用OpenGL 我的问题是如何将这些顶点转换为与OpenGL兼容的顶点 例如,如果我有此格式的DirectX顶点: DirectX顶点顶点DX={x,y,z} 在OpenGL顶点中它会是什么样子: OpenGLVertexGL= 在这个文件中,我还有三角形的面数据,这些面的索引指向右顶点。它们是否也必须以某种方式转换,或者只需要更改顶
在这个文件中,我还有三角形的面数据,这些面的索引指向右顶点。它们是否也必须以某种方式转换,或者只需要更改顶点?DirectX使用左手坐标系,而OpenGL使用右手坐标系 这描述了以另一种方式(即从OpenGL到Directx)移植数据时需要执行的操作。要点是: Direct3D使用左手坐标系。如果要移植基于右手坐标系的应用程序,则必须对传递给Direct3D的数据进行两次更改
- 翻转三角形顶点的顺序,以便系统从前面顺时针遍历它们。换句话说,如果顶点是v0、v1、v2,则将它们作为v0、v2、v1传递给Direct3D
- 使用视图矩阵在z方向上将世界空间缩放-1。为此,翻转用于视图矩阵的D3DMATRIX结构的_31、_32、_33和_34成员的符号
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glScalef(1.0f, 1.0f, -1.0f);
谢谢你的回答。只要一个问题“翻转三角形顶点的顺序”就意味着翻转验证的顺序({x,y,z}=>{x,z,y})或者翻转三角形面的顺序?@Silex-翻转三角形面的顺序耶,我也是这么想的,谢谢你的帮助和详细的回答!