Вы строите без флага /Gec
, поэтому компилятор HLSL не допускает поведение «обратной совместимости».
«COLOR» в случае вершинного шейдера - это вершина semanti c, которая в большинстве случаев являются «определяемой пользователем» семантикой.
«COLOR» также является допустимым «определяемым пользователем» семантикой c для привязки вывода Vertex Shader и ввода Pixel Shader.
Для строгого Совместимость: вы должны использовать SV_Target
для вывода пиксельного шейдера.
В идеале вы также должны использовать SV_Position
вместо Position
для ввода Vertex Shader, но вы должны соответствовать тому, что вы указали в макет ввода. Все, что вы используете между VS и PS, также должно быть согласованным.
Если вы добавите /Gec
в командную строку пиксельного шейдера, он будет построен, потому что он поддерживает более старый стиль Direct3D 9: fxc /Epsmain /Gec /Tps_4_0 demo.hlsl
См. Документы Microsoft