我正在通过 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 调用允许应用程序正常运行。
关于如何解决这个问题的任何建议?