Использую VS comunity 2022. windows 10 SDK установлен (а также более поздний вариант с поддержкой DirectX 12).
В проекте есть файл с созданием шейдеров и файл с созданием окна, где все отрисоывается.
Шейдеры загружаются прямо во время рантайма, поэтому файлы .hlsl исключены из сборки.
Используются модели "ps_4_0" и "vs_4_0" их код
float4 VS(float4 Pos : POSITION) : SV_POSITION
{
return Pos;
}
float4 PS(float4 Pos : SV_POSITION) : SV_Target
{
return float4(1.0f, 0.0f, 0.0f, 1.0f);
}
Компиляция идет через D3DCompileFromFile (как указано в документации майкрософт альтернатива D3DX11CompileFromFile). В момент компиляции все, что возвращает hresult, учитывается - ошибок нет.
Далее из скомпилированного шейдера (ID3DBlob*) путем CreatePixelShader создается пиксельный шейдер.
Путем CreateVertexShader создается вершинный шейдер, его шаблон создается через CreateInputLayout с таким описанием:
D3D11_INPUT_ELEMENT_DESC layout[] = {{
"POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0
}};
После этого устанавливаются шейдеры, устанавливается шаблон вершинного шейдера, создается структура для отрисовки (треугольник, так что XMFLOAT3 3 штуки), вызывается DRAW(3, 0).
Результат - белое окно с красной точкой. То есть пиксельный шейдер работает, а с вершинным что-то не так.