错误:vs_2_0输出语义无效

时间:2017-07-31 18:19:14

标签: hlsl

它说: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是我对像素着色器的设置。 我希望有人可以帮助我。

3 个答案:

答案 0 :(得分:6)

打开 .hlsl 文件的“属性”页面,然后在 HLSL编译器/常规/着色器类型中选择像素着色器

答案 1 :(得分:0)

不要忘记为调试和发布设置此属性。

答案 2 :(得分:0)

您可以通过修改 $inputthebeer 属性来解决问题

shader

properties -> HLSL Compiler -> General -> Shader Type -> Pixel Shader (/ps)