0

我开始使用 Shader Model 4.0,并且正在尝试设置一个基本的示例项目。(基本上是渲染和点亮一个立方体)

但是自动取款机。我完全停留在最基本的部分。我的顶点着色器不会编译并出现以下错误消息:

错误 1 ​​编译错误 ...\x.fx:

...\x.fx(32,43): error X3013: 'VertexShaderFunction': function does not take 0 parameters ...\x.fx 32 43 ...

到目前为止我的代码:

float4x4 World;
float4x4 View;
float4x4 Projection;

struct VS_INPUT
{
    float4 Position : POSITION;
};

struct VS_OUTPUT
{
    float4 Position : POSITION;
};

VS_OUTPUT VertexShaderFunction(in VS_INPUT input)
{
    VS_OUTPUT output;

    float4 worldPosition = mul(input.Position, World);
    float4 viewPosition = mul(worldPosition, View);
    output.Position = mul(viewPosition, Projection);

    return output;
}

technique Technique1
{
    pass Pass1
    {
        SetVertexShader( Compile( vs_4_1, VertexShaderFunction() ) );
        SetGeometryShader(NULL);
        SetPixelShader( NULL );
    }
}

VS_INPUT 参数清楚地标记为输入而不是统一的。该结构为每个成员(也是唯一的一个)分配一个输入语义。有谁知道为什么编译不正确?

我正在使用Win7 Ultimate + DirectX11 + XNA GameStudio 4.0,我的显卡是Intel GMA 4500MHD(所以它应该允许着色器模型 4.0)

4

1 回答 1

0

我走了,回答我自己的问题 - 多么愚蠢的错误(而且很难找到):

它是 CompileShader() 而不是 Compile()

于 2012-12-22T22:42:58.223 回答