2012-07-14 157 views
0

我有一个针对DirectX8编写的游戏,我正尝试在DirectX9下进行更新。我听说MS不支持DirectX8,并且DirectX9应该允许我在DirectX8中完成所做的工作。所以我开始将所有东西都改为8到9,但LPDIRECT3DDEVICE9似乎不存在。那么DirectX9中的LPDIRECT3DDEVICE8等价于什么?什么是DirectX9相当于LPDIRECT3DDEVICE8等?

我也看到D3DCAPS8没有D3DCAPS9等价物。 (编辑:哦,等待,它只是在一个新的头文件D3D9Caps.h中)。

而且我也没有定义LPD3DXSPRITE,虽然我在DirectX9的讨论中看到它。嗯。

也许我真的需要的是头文件d3dx9.h和D3DX8Math.h的等价物。

要清楚,我不想尝试使用任何DirectX9功能,除了希望存在的DirectX8反向兼容性。

回答

0

好吧,似乎主要回答我的问题,是这样的:

具有DirectX9的在Visual Studio 2010中安装的SDK会导致默认或移植的项目文件能够找到一些DirectX头文件,但不会其他人。此外,尽管DirectX9中的大多数或所有DirectX8结构都具有相同的结构,但它们所在的头文件以及调用的头文件可能已更改。主要是,正如Preet Kukreti写道的,有些已经转移到了D3dx9core.h,这是没有编辑项目配置就可能找不到的标题之一。在VS 2010中,从项目选项卡转到属性下的项目属性页面,然后选择VC++目录,然后在包含目录下,添加到现有字符串;路径,其中路径是SDK中包含文件夹的路径。 (不要使用Windows 7搜索找到路径,因为它几乎是无用的。如果你想实际搜索你的计算机的文件,下载并使用Agent Ransack代替,它会在1左右找到它第二与挫折战斗Windows搜索的潜在小时)

矿是:C:\ Program Files文件(x86)的\微软的DirectX SDK(2010年6月)\包含\ d3dx9math.h

1

LPDIRECT3DDEVICE8只是一个struct IDirect3DDevice8*。那些LP*宏定义似乎在9中被弃用,所以使用I*等效。

D3dx9core.h包含您正在寻找的精灵类。

这也可能是有用的:

+0

谢谢!出于某种原因,我可以包含其他DX9库的头文件,但不包括D3dx9core.h。所以这可能只是我需要调整我的项目设置以查找库文件夹结构中的正确位置。 (好东西,Windows中没有工作文件搜索实用程序,会因为某些原因找到头文件...... ;-))我将检查这些链接。 – Dronz 2012-07-14 20:28:06

+0

噢,我读过这些MS文章,但是如果他们解释了如何在项目中设置链接到库,我错过了它。 #include works,但#include does not。这些重要细节之一是在他们完成项目之后没有人考虑的,并且不在代码中,并且随机地从API版本更改为版本。当我找到我需要的缺失位时,我会发布。 – Dronz 2012-07-14 20:34:51