Hieroglyph3 HLSL 着色器错误 X3004:未声明的标识符“输出”

问题描述 投票:0回答:1

我正在尝试为图形编程项目加载此着色器,但不断收到相同的错误

hlsl文件如下

//---------------------------------

Texture2D DiffuseTexture : register(t0);
SamplerState TextureSampler : register(s0);

cbuffer Transforms
{
    matrix WorldMatrix;
    matrix ViewMatrix;
    matrix ProjMatrix;
};

//---------------------------------
struct VS_INPUT
{
    float4 position : POSITION;
    float4 color : COLOR;
    float2 tex : TEXCOORD0;
};


struct VS_OUTPUT
{
    float4 position : SV_POSITION;
    float4 color : COLOR;
    float2 tex : TEXCOORD0;
};



//----------------------------------
VS_OUTPUT VSMain(in VS_INPUT v)
{
    VS_OUTPUT o;

    float4 WorldSpace = mul(v.position, WorldMatrix);
    float4 ViewSpace = mul(WorldSpace, ViewMatrix);
    float4 ScreenSpace = mul(ViewSpace, ProjMatrix);

    o.position = ScreenSpace;
    o.color = v.color;

    output.tex = input.tex;

    return o;
}


//-----------------------------------
float4 PSMain(in VS_OUTPUT input) : SV_Target
{
    float4 sampledTextureColour = DiffuseTexture.Sample(TextureSampler, input.tex);
    return(sampledtexturecolour);
}

有谁知道到底是什么导致了这个错误?

一直在努力寻找在线 Heiroglyph3 资源

尝试运行 heiroglpyh3 项目以使用上述 hlsl 着色器文件加载纹理球体,但出现如图所示的错误

hlsl
1个回答
1
投票

问题出在

VSMain()
output.tex = input.tex;

正如错误消息本身所说,
output
没有在任何地方声明。您的意思可能是
o.tex

即使您修复了该问题,您也会遇到的另一个问题是在同一行上使用

input
,因为它也没有声明。您仅在
PSMain()
中声明了它。我怀疑正确的使用方法是
o.tex = v.tex;

© www.soinside.com 2019 - 2024. All rights reserved.