2

目前我有一个通过写坐标绘制的3D 立方体,它可以在黑屏上旋转和移动。现在我有一个在“3Ds Max”中创建的模型(这是一个带有高石墙的小后院,所以我试图将它用作我的世界对象。)我想将此模型加载到我的DirectX9/C++ 项目中。 据我在 DirectX SDK 示例中看到的,此代码用于加载.X模型(它需要一个“3Ds Max”插件来导出这种扩展。我不确定。)

将 .X 文件加载到 DX9/C++ 中的代码:

D3DXLoadMeshFromX( "Tiger.x", D3DXMESH_SYSTEMMEM, 
            g_pd3dDevice, NULL, &pD3DXMtrlBuffer, NULL,
            &g_dwNumMaterials, &g_pMesh )

是否有像“D3DXLoadMeshFromOBJ(.....)”这样的函数来加载对象?如何加载和渲染.OBJ文件?8(

我的另一个问题是.X文件和.OBJ文件有什么区别,我应该使用它们中的哪一个?

4

2 回答 2

4

AFAIK,DirectX 不支持开箱即用的波前目标文件。为此,您将需要一个外部网格加载器。

我记得,在 DX 10 SDK 中有一个如何加载.obj文件的示例,我认为该示例名为 MeshFromOBJ10。我不知道它在 DirectX 9 中是否有用。

据我所知,标准的.x只支持基本网格,没有动画等增强功能。如果您想尝试图形编程,那还不错,但是如果您的目标是更高的概念,则可以稍后切换。我想你可以在这里查看.obj文件的优点。

为您正在使用的输入数据创建抽象总是一个好主意。例如,您可以创建一个类AbstractMesh和一个XMesh派生自它的实现。稍后,您可以添加其他类似OBJMesh或类似的实现。

我希望我能帮助你一点:) 快乐编码!

于 2011-06-06T09:56:43.010 回答
1

动画完全支持 x 文件格式,此外,当您要使用着色器时,它支持 fx 文件。您可以从此页面下载的导出器插件和示例:

http://www.cgdev.net/download.php

于 2013-04-01T13:49:38.057 回答