0

我有一个为 DirectX8 编写的游戏,我正在尝试更新它以在 DirectX9 下构建。我听说 MS 不支持 DirectX8,DirectX9 应该允许我做 DirectX8 中所做的事情。所以我首先将所有东西 8 更改为 9,但 LPDIRECT3DDEVICE9 似乎不存在。那么 DirectX9 中是否存在(以及什么是)与 LPDIRECT3DDEVICE8 等效的东西?

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

而且我也没有定义 LPD3DXSPRITE,尽管我在 DirectX9 的讨论中看到了它。唔。

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

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

4

2 回答 2

1

一个LPDIRECT3DDEVICE8只是一个struct IDirect3DDevice8*。这些LP*宏定义似乎在 9 中已被弃用,因此请使用I*等价物。

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

这些也可能有用:

于 2012-07-14T03:14:47.357 回答
0

好的,我的问题的主要答案似乎是:

安装 DirectX9 SDK 会导致 Visual Studio 2010 中的默认或移植项目文件能够找到一些 DirectX 头文件,但不能找到其他头文件。此外,虽然 DirectX9 中的大多数或所有 DirectX8 结构都有等效的结构,但它们所在的头文件以及这些头文件的名称可能已经改变。主要是,正如 Preet Kukreti 所写,有些人已经转移到 D3dx9core.h,这是如果不编辑项目配置可能无法找到的头文件之一。在 VS 2010 中,从 Project 选项卡的 Properties 下转到项目的 Property Pages,然后选择 VC++ Directories,然后在 Include Directories 下,添加到现有字符串 ;path,其中 path 是 SDK 中包含文件夹的路径。

(顺便说一句,不要使用 Windows 7 搜索来查找路径,因为它几乎没用。如果您想实际搜索计算机中的文件,请下载并使用 Agent Ransack,它会在大约 1 秒内找到它,而不是潜在的几个小时与 Windows 搜索作斗争的挫败感。)

我在:C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Include\d3dx9math.h

于 2012-07-14T21:33:00.987 回答