【问题标题】:Whats Wrong With This HLSL Shader ?这个 HLSL 着色器有什么问题?
【发布时间】:2014-08-16 20:33:31
【问题描述】:

我做错了什么? 如果我编译这个得到一个错误

cbuffer MatrixBuffer
{
    matrix worldM;
    matrix viewM;
    matrix projectionM;
};

struct VertexInput
{
    float4 position : POSITION;
    float4 color : COLOR;
};

struct PixelInput
{
    float4 position : SV_POSITION;
    float4 color : COLOR;
}

PixelInput ColorVertexShader(VertexInput input)
{
    PixelInputType output;

    input.position.w = 1.0f;

    output.position = mul(input.position, worldM);
    output.position = mul(output.position, viewM);
    output.position = mul(output.position, projectionM);

    output.color = input.color;

    return output;
}

我在“{”的第 2 行遇到语法错误

如果我这样做

    matrix worldM;
    matrix viewM;
    matrix projectionM;


struct VertexInput
{
    float4 position : POSITION;
    float4 color : COLOR;
};

struct PixelInput
{
    float4 position : SV_POSITION;
    float4 color : COLOR;
}

PixelInput ColorVertexShader(VertexInput input)
{
    PixelInputType output;

    input.position.w = 1.0f;

    output.position = mul(input.position, worldM);
    output.position = mul(output.position, viewM);
    output.position = mul(output.position, projectionM);

    output.color = input.color;

    return output;
}

我得到了一个意外的令牌“输出”

我不知道出了什么问题 在 HLSL 中编写着色器时,我仍然是个菜鸟

【问题讨论】:

    标签: directx shader hlsl directx-11 vertex-buffer


    【解决方案1】:

    你已经定义了

    struct PixelInput
    {
        float4 position : SV_POSITION;
        float4 color : COLOR;
    }
    

    但后来你使用

     PixelInputType output;
    

    显然,这行不通。使用相同的名称。

    【讨论】:

    • 大声笑,错过了一个问题,你可以使用 Nvidia CG 和 DirectX 吗?
    • 不知道,我不知道前者。
    【解决方案2】:

    我不确定这是否会有所帮助,但也许可以尝试像这样定义您的 cbuffer:

    cbuffer cbPerObject: register(b0)
    {
        matrix WorldM:      packoffset(c0);
        matrix ViewM:       packoffset(c4);
        matrix ProjectionM: packoffset(c8);
    };
    

    【讨论】:

      猜你喜欢
      • 2018-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-20
      相关资源
      最近更新 更多