Я понимаю, что кто-то выложил псевдокод ранее. Вот код C ++, использующий Windows SDK (а не библиотеки D3DX, как было запрошено).
Здесь "PixelShader.cso" - это предварительно скомпилированный шейдер hlsl, сгенерированный Visual Studio 11 из файла .hlsl в проекте. Скомпилированный файл .cso обычно по умолчанию перемещается в папку Projects / ProjectName / Debug. В результате он должен быть вырезан и вставлен в тот же каталог, что и ваш исходный код перед использованием. Помните, что этот параметр можно изменить, щелкнув правой кнопкой мыши файл HLSL в Visual Studio 11 и изменив параметры вывода. По умолчанию его: $ (OutDir)% (имя файла) .cso, измените его на: $ (Directory)% (имя файла) .cso
ID3D11PixelShader* PS;
ID3DBlob* PS_Buffer;
D3DReadFileToBlob(L"PixelShader.cso", &PS_Buffer);
d3d11Device->CreatePixelShader(PS_Buffer->GetBufferPointer(), PS_Buffer->GetBufferSize(), NULL, &PS);
d3d11DevCon->PSSetShader(PS, 0, 0);
Обратите внимание на букву L перед "PixelShader.cso". В моем проекте использовался многобайтовый набор символов, если у вас установлено Unicode, L может не понадобиться.