Я пишу простой рендер, использующий библиотеку d3d11 в Visual Studio 2019, и он прекрасно собирается и работает. Однако, когда я пытаюсь запустить графический отладчик, он немедленно выдает нарушение прав чтения для адреса 0x0000000000000000 (что явно неверно).
Исключение выдается из dll DXCaptureReplay в строке
DeviceContext.PSSetShader(InShaderToBind.Shader.PS, NULL, 1);
Где InShaderToBind.Shader.PS - указатель на ID3D11PixelShader
Это стало самым странным, когда я из-за недостатка идей попробовал
int X = 0;
ID3D11ClassInstance* FakedClassInstance = reinterpret_cast<ID3D11ClassInstance*>(&X);
DeviceContext.PSSetShader(InShaderToBind.Shader.PS, &FakedClassInstance, 1);
Поскольку это исключение не будет выброшено доЯ пытаюсь захватить кадр (который, я думаю, имеет смысл, так как этот указатель будет действителен только для области, где X все еще действует)
Документация MSDN гласит, что NULL должен быть совершенно корректным аргументом для передачи в PSSetShader(как отмечено здесь: https://docs.microsoft.com/en-us/windows/win32/api/d3d11/nf-d3d11-id3d11devicecontext-pssetshader)
Есть идеи, что может пойти не так?
(Если я закомментирую PSSetShader, исключение не будет сгенерировано, и я могу сделать снимки)