它说:Invalid vs_2_0
输出语义SV_Target
。
因此,Visual Studio 2017正在编译我的像素着色器,好像它是一个顶点着色器。但在属性面板中,我将其指定为ps_5_0。是否有我应该指定的东西?
顶点着色器: -
cbuffer ConstantBuffer : register(b0)
{
matrix World;
matrix View;
matrix Projection;
}
struct Input {
float3 Pos : POSITION;
float4 Color: COLOR;
};
struct VS_OUTPUT
{
float4 Pos : SV_POSITION;
float4 Color : COLOR0;
};
VS_OUTPUT main(Input input)
{
VS_OUTPUT output = (VS_OUTPUT)0;
output.Pos = mul(input.Pos, World);
output.Pos = mul(output.Pos, View);
output.Pos = mul(output.Pos, Projection);
output.Color = input.Color;
return output;
}
像素着色器: -
struct VS_OUTPUT
{
float4 Pos : SV_POSITION;
float4 Color : COLOR0;
};
float4 main(VS_OUTPUT input) : SV_Target
{
return input.Color;
}
而here是我对像素着色器的设置。 我希望有人可以帮助我。
答案 0 :(得分:6)
打开 .hlsl 文件的“属性”页面,然后在 HLSL编译器/常规/着色器类型中选择像素着色器。
答案 1 :(得分:0)
不要忘记为调试和发布设置此属性。
答案 2 :(得分:0)
您可以通过修改 $inputthebeer
属性来解决问题
shader
或
properties -> HLSL Compiler -> General -> Shader Type -> Pixel Shader (/ps)