遇到这个FXC错误有问题吗?

时间:2015-02-06 23:11:59

标签: c++ windows directx direct3d11

我搜索了相当多的内容,无法为我的生活找到解决方案。我正在使用Direct3D 11(在/ Sample / - the cube one下的教程中)。它使用.fx,我知道它已被弃用,但没有没有教程可以使用它。差不多,每当我构建我的程序时,我都会收到错误" fxc.exe退出代码1"。这是我的代码" Shader.fx":

    // Constant buffer 
cbuffer ConstantBuffer : register(b0){
    matrix World;
    matrix View;
    matrix Projection;
}

struct VS_OUTPUT{
    float4 Pos : SV_POSITION;
    float4 Color : COLOR0;
};

// Vertex Shader
VS_OUTPUT VS(float4 Pos : POSITION, float4 Color : COLOR){
    VS_OUTPUT output = (VS_OUTPUT)0;
    output.Pos = mul(Pos, World);
    output.Pos = mul(output.Pos, View);
    output.Pos = mul(output.Pos, Projection);
    output.Color = Color;
    return output;
}

// Pixel Shader
float4 PS(VS_OUTPUT input) : SV_Target{
    return input.Color;
}

在文件的属性下,我将ShaderType设置为"效果(/ fx)"。而且我在入口点名称下没有任何东西。顺便说一句,我正在使用Visual Studio 2013。

1 个答案:

答案 0 :(得分:2)

您需要将Shader Type设置为Effect (/fx)并将Shade Model设置为Shader Model 5 (/5_0)以使用VS 2013构建legacy Effects 11着色器。确保为所有设置了.fx文件属性配置和所有平台。

fx file property page

您应该看一下使用CodePlex版本的Effects 11和已更新的各种Win32 desktop samples,以便在没有旧版DirectX SDK的情况下为VS 2013构建。

有些教程不使用遗留效果,包括Direct3D Tutorial Win32 SampleDirectX Tool Kit的(正在进行)教程,当然还有适用于Windows 8.x的Windows应用商店应用tutorials