- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
首先,我从 Frank Luna 书中学习 DirectX 11 我来到了需要创 build 备的部分,但它给出了错误:“0x887a002d:应用程序请求的操作依赖于丢失或丢失的 SDK 组件不匹配。”我一直在寻找,我尝试了不同的解决方案,但都没有成功,
我尝试过的解决方案:1)我用的是visual studio 2015自带的DirectX库,所以安装了(正确)2)我尝试将其更改为 D3D11CreateDeviceAndSwapChain 但它也给出了相同的错误
我有 DirectX SDK(2010 年 6 月)连接到该项目(是的,我想使用 DirectX 遗留 SDK)。
我的代码:
HRESULT hr;
UINT CreateDeviceFlags = 0;
D3D_FEATURE_LEVEL featureLevel;
UINT m4xMsaaQuility;
#if defined(DEBUG) || defined(_DEBUG)
CreateDeviceFlags |= D3D11_CREATE_DEVICE_DEBUG;
#endif
hr = D3D11CreateDevice(
0,
D3D_DRIVER_TYPE_HARDWARE,
0,
CreateDeviceFlags,
0, 0,
D3D11_SDK_VERSION,
&m_pDevice,
&featureLevel,
&m_pDeviceContext);
if (FAILED(hr))
{
return -1;
}
包括:
#include <iostream>
#include <Windows.h>
#include <d3d11.h>
#include <d3dcompiler.h>
#include <DirectXMath.h>
#include <DirectXColors.h>
// Link Library Dependencies
#pragma comment(lib, "d3d11.lib")
#pragma comment(lib, "dxgi.lib")
#pragma comment(lib, "d3dcompiler.lib")
#pragma comment(lib, "winmm.lib")
最佳答案
您没有提到您使用的是哪个操作系统。
该错误表明您的系统不具有支持D3D11_CREATE_DEVICE_DEBUG
所需的DirectX SDK 层包。您可以通过构建不使用此标志的发布配置来验证这一点,并检查它是否可以创建 Direct3D 11 设备。
使用 DirectX 11.0 时,旧版 DirectX SDK(甚至是 2010 年 6 月的最后一个)仅安装适用于 Windows 7 或更早版本的 DirectX Developer Debug Runtime。它不支持带有 KB 2670838(也称为 DirectX 11.1)的 Windows 7 SP1、Windows 8、Windows 8.1 或 Windows 10。
如果您使用的是带有 KB 2670838 的 Windows 7 SP1,那么您应该通过安装 Windows 8.1 SDK(包含在 VS 2015 中)获得正确的调试 SDK 层。参见 DirectX 11.1 and Windows 7 Update .
如果您使用的是 Windows 8、Windows 8.1 或 Windows 8.1 更新,那么您应该通过安装 Windows 8.1 SDK(包含在 VS 2015 中)获得正确的调试 SDK 层。请注意,Windows 8 不再受支持,因此您应该确保迁移到 Windows 8.1 更新或 Windows 10。
如果您使用的是 Windows 10,则需要启用 图形工具 Windows 功能,该功能提供与您当前的 Windows 10 版本相匹配的调试 SDK 层。请记住,这是特定于操作系统版本的,因此升级到较新版本或 Insider 版本可能需要重新安装 Windows 功能。在企业设置中,您的 IT 管理员必须批准使用此 Windows 可选功能,您才能安装它。参见 Visual Studio 2015 and Graphics Tools for Windows 10
参见 Where is the DirectX SDK (2015 Edition)?和 Direct3D SDK Debug Layer Tricks
Frank Luna 的书很棒,但写于 DirectX SDK 弃用之前。阅读this blog post一些重要的注意事项。请务必阅读 Living without D3DX并考虑使用来自 GitHub 的最新版本的 Effects 11 .
As you are new to DirectX 11, I strongly recommend taking a look at Anatomy of Direct3D 11 Create Device as well as the DirectX Tool Kit for DirectX 11 tutorials. It would probably serve you well to do it before working through all of Luna's book so you can get a foundation in the 'modern' way to work with DirectX 11. This will let you more easily discern the deprecated stuff in Luna's book from the parts that are still quite relevant.
关于c++ - D3D11CreateDevice 0x887a002d 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44334207/
我是一名优秀的程序员,十分优秀!