CreateGraphicsPipelineState завершается с ошибкой E_INVALIDARG - PullRequest
0 голосов
/ 13 июня 2019

Создание объекта состояния конвейера в Directx 12 завершается неудачно с E_INVALIDARG, и уровень отладки выводит кучу бессмысленных высказываний о том, что данные в экземпляре D3D12_GRAPHICS_PIPELINE_STATE_DESC недействительны:

D3D12 ОШИБКА: ID3D12Device :: CreateBlendState: DestBlendAlpha [0] пытается использовать значение D3D11_BLEND (0x4), которое манипулирует цветом, что недопустимо. [STATE_CREATION ERROR # 115: CREATEBLENDSTATE_INVALIDDESTBLENDALPHA] D3D12 ОШИБКА: ID3D12Device :: CreateDepthStencilState: BackFace.StencilFailOp имеет нераспознанное значение. [STATE_CREATION ERROR # 106: CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFAILOP] D3D12 ОШИБКА: ID3D12Device :: CreateDepthStencilState: BackFace.StencilDepthFailOp имеет нераспознанное значение. [STATE_CREATION ERROR # 107: CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILZFAILOP] D3D12 ОШИБКА: ID3D12Device :: CreateDepthStencilState: BackFace.StencilPassOp имеет нераспознанное значение. [STATE_CREATION ERROR # 108: CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILPASSOP] D3D12 ОШИБКА: ID3D12Device :: CreateDepthStencilState: BackFace.StencilFunc имеет нераспознанное значение. [STATE_CREATION ERROR # 109: CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFUNC] D3D12 ОШИБКА: ID3D12Device :: CreateRasterizerState: FillMode имеет нераспознанное значение. [STATE_CREATION ERROR # 95: CREATERASTERIZERSTATE_INVALIDFILLMODE] D3D12 ОШИБКА: ID3D12Device :: CreateRasterizerState: FillMode должен иметь значение D3D12_FILL_MODE_SOLID, если для ConservativeRaster установлено значение D3D12_CONSERVATIVE_RASTERIZATION_MODE_ON: FillMode = D3D12_FILL_MODE_WIRD_DER_VID_RATER_RESTRATRESRAS [STATE_CREATION ERROR # 95: CREATERASTERIZERSTATE_INVALIDFILLMODE] D3D12 ОШИБКА: ID3D12Device :: Create *: Указанная маска узла (0xcccccccc) содержит бит, установленный за пределами числа узлов устройства. [STATE_CREATION ERROR # 900: INVALID_NODE_INDEX]

список можно продолжить ...

Похоже, что память повреждена, когда это не так, я проверял все значения снова и снова, они в порядке. По крайней мере некоторые значений должны быть правильными, посмотрите на последнее сообщение, например, оно говорит: Указанная маска узла (0xcccccccc) … Я уверен, что это не 0xcccccccc до CreateGraphicsPipelineState вызов, отладчик подтверждает.

1 Ответ

0 голосов
/ 14 июня 2019

Оказалось, что exe, созданный на моей машине, не сможет создать PSO на других компьютерах, но если бы проект собирался на другой машине и работал на моем, проблем с PSO не возникало.

ПереустановкаWindows SDK помог устранить проблему.

...