InvalidArgumentException при вызове D3D CreateRasterizerState1

Я работаю в DirectX 11 через C ++, и я получаю сообщение об ошибке при создании состояния 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 являются допустимыми, поэтому мне не ясно, почему я получаю недопустимое исключение argumet здесь.

Закомментирование вызовов CreateRasterizerState1 и RSSetState позволяет приложению нормально работать.

Любые предложения относительно того, как это может быть решено?

0

Решение

Решено. Проблема была в том, что я не указывал DepthClipEnable == true. Поскольку я нацеливаюсь на уровень функций 9.1, DepthClipEnable должно быть истинным, и поскольку я обнулял память, я фактически устанавливал ее в ложь.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector