我正在学习使用 DirectX11 进行游戏编程的教程。当我运行示例代码时,它给了我这个错误:
First-chance exception at 0x76E12EEC in Chapter1.exe: Microsoft C++ exception: Platform::COMException ^ at memory location 0x0307E824. HRESULT:0x887A0004
问题似乎出在以下代码中的 featureLevel 和 creationFlag 中:
hr = D3D11CreateDevice(
nullptr,
D3D_DRIVER_TYPE_HARDWARE,
nullptr,
creationFlags,
featureLevels,
ARRAYSIZE(featureLevels),
D3D11_SDK_VERSION,
&device,
&featureLevel,
&context);
ThrowIfFailed(hr);
但是,如果我将 creationFlags 和 featureLevels 的值更改为 0 和 nullptr,则代码可以正常工作。我正在使用带有 Windows 8.1 和 Windows SDK 8.0 的 Visual Studio 2012。
以下是相关代码:
UINT creationFlags = D3D11_CREATE_DEVICE_BGRA_SUPPORT;
#if defined(_DEBUG)
// For debugging
creationFlags |= D3D11_CREATE_DEVICE_DEBUG;
#endif
D3D_FEATURE_LEVEL featureLevels[] =
{
D3D_FEATURE_LEVEL_11_1,
D3D_FEATURE_LEVEL_11_0,
};
我读到了第一次机会异常,这并不意味着代码真的有问题,但它不会消失。我应该怎么办?