Я не смог ничего найти по этому поводу, и я не уверен, реально ли это выполнимо, но вот так:
Я бы хотел иметь возможность предоставить шейдер для моей игры DX11, которая не загружается из файла (с тех пор этот файл должен был быть включен в проект eeeeevery с использованием моей платформы). Я хочу использовать содержимое файла HLSL напрямую. Я попробовал это, но это вернуло мне E_INVALIDARG.
Вот код:
auto pixelShaderByteCode = std::string("struct PixelShaderInput" \
"{" \
"float4 pos : SV_POSITION;" \
"float3 color : COLOR0;" \
"};" \
"float4 main(PixelShaderInput input) : SV_TARGET" \
"{" \
"return float4(input.color, 1.0f);" \
"}");
Microsoft::WRL::ComPtr<ID3D11PixelShader> ps;
auto hr = m_deviceResources->GetD3DDevice()->CreatePixelShader(
pixelShaderByteCode.c_str(),
pixelShaderByteCode.length(),
nullptr,
&ps);
if (FAILED(hr))
{
// that did not work... hr = E_INVALIDARG
}
Это тот факт, что мне понадобится скомпилированный шейдер, чтобы это работало? Если это так, что было бы лучше всего для «запекания» шейдеров в движок?