在同一代码文件中包括 Directx 9 和 10
Include Directx 9 and 10 in the same code file
又问奇怪事情的家伙
我看到他们使用不同的可执行文件,用于为 directx 9 和 10 创建的游戏。是否可以在代码文件中包括"d3d9.h"和"d3d10.h",然后选择 direct3d 9 函数或 direct3d 10 函数,具体取决于,例如,作用类似于标志的参数?我不是在谈论使用 direct3d 10 函数使用 direct3d 9 上下文和对象绘制一些东西。
我想做的是创建一个名为 init3D(UINT version);
取决于version
,它将创建一个 directx 9 或 directx 10 对象和设备。我不知道这是否可能,或者我必须创建两个不同的可执行文件(或者如果我决定也使用 d3d8,则创建 3 个)
感谢您的帮助,并原谅我对一些C++技术缺乏了解。
是的,这是完全可能的。
唯一的问题是两者的库必须存在于目标计算机上。由于您已与 d3d10 链接,因此即使您要在 d3d9 模式下运行,也必须在计算机上安装它才能加载.exe,而在 xp 计算机上并非如此。
为了避免这种情况,您需要使用动态链接来调用任何函数,以便仅在运行时加载库。查找 LoadLibrary 和 GetProcAddress。幸运的是,使用 direct3d 时,您可能调用的唯一全局函数是"create"函数。D3DX会导致同样的问题
您确实了解不支持DirectX 8,对吗? DirectX 10 包含 DirectX 9,因此没有理由同时要求两者。
您应该能够根据安装的 DirectX 版本有条件地包含头文件。
下面是一个如何做到这一点的示例,尽管它是用 C# 编写的:
如何编码以在 C# 中在我的机器上获取直接 X 版本?
传统方法是安装应用程序时使用的 DirectX 版本。 任何其他方式都应被视为黑客攻击,从长远来看是不受支持的。
另一条评论。您想在哪个平台上运行它?
Windows vista和更新版本将运行directx11,directx11将在directx9级别的硬件上运行(显然没有像tessalationshaders这样的新功能)。
如果你不需要支持XP(它现在真的已经很老了......),那么忘记dx9和dx10,只使用directx11
- 从矢量<无符号字符>转换为字符* 包括垃圾数据
- Windows 10-使用gtkmm-3.0库和g++[包括再现]的分段故障
- 为什么 cmake 许可证<>样式不包括?
- 计算平均值,不包括上次得分
- 从多个源构造一个对象,包括一个对象向量
- 如何在directx/c++中进行平移/缩放操作
- DrawIndexedInstanced 具有不同的 Index Count per Instance (Directx
- 在编译中包括 Botan 2
- 将值从另一个数组写入数组,不包括不需要的值 C++
- VS Code C++:不准确的系统包括路径错误(wchar.h,boost/lambda/lambda.hpp)
- Directx 11 - CompileFromFile() is not compiling
- 字节数组初始化会导致 DirectX 崩溃
- 包括C++头文件
- 在 DirectX 11 中从 GPU 读回顶点缓冲区(并获取顶点)
- CPP 包括 Azure DevOps 中的目录设置
- 包括STL,而不会乱扔全球范围
- 如何反转我的输入,包括否定
- 在同一代码文件中包括 Directx 9 和 10
- 如何在DirectX 11中获得当前显示模式,包括刷新率
- Visual Studio 2010 - C++和DirectX文件中的链接错误包括问题