0

我正在通过 C++ 在 DirectX 11 中工作,并且在创建 raserizer 状态时出现错误。首先,这里是代码:

// set up rasterizer
D3D11_RASTERIZER_DESC1 rasterizerStateDescription;
::ZeroMemory(&rasterizerStateDescription, sizeof(D3D11_RASTERIZER_DESC1));
rasterizerStateDescription.FillMode = D3D11_FILL_WIREFRAME;
ID3D11RasterizerState1* rasterizerState;
DX::ThrowIfFailed(m_d3dDevice->CreateRasterizerState1(&rasterizerStateDescription, &rasterizerState));
m_d3dContext->RSSetState(rasterizerState);

在那里设置 FillMode 并不重要 - 这只是为了说明我的用法。我已经尝试设置所有成员,但没有一个。在调试器中,我可以看到所有其他成员都有其默认值。

该错误在 CreateRaserizerState1 处引发,并且是:

First-chance exception at 0x75EC4B32 in my.exe: 
Microsoft C++ exception: 
Platform::InvalidArgumentException ^ at memory location 0x028DE2CC. 
HRESULT:0x80070057

据我所知, raserizerStateDescription 和 rasterizerState 都是有效的,所以我不清楚为什么我在这里得到一个无效的参数异常。

注释掉 CreateRasterizerState1 和 RSSetState 调用允许应用程序正常运行。

关于如何解决这个问题的任何建议?

4

1 回答 1

0

解决。问题是我没有指定 DepthClipEnable == true。因为我的目标是功能级别 9.1,所以 DepthClipEnable 必须为 true,并且因为我正在将内存归零,所以我有效地将其设置为 false。

于 2013-02-28T19:18:43.020 回答