HLSL:空的fx文件:X3000:意外的标记“{”

6
以下错误出现: Test.fx(1,1): error X3000: 语法错误:意外的标记 '{'
Text.fx 包含如下内容: 无。
我还尝试了在另一个测试项目中正常工作的效果文件。
float4x4 mWorld;

struct TInputVertex {
    float3 vPosition    : POSITION0;
    float3 vNormal      : NORMAL0;
    float2 vTexCoord    : TEXCOORD0;
    float4 vColor       : COLOR0;
};

struct TOutputVertex {
    float4 vPosition    : POSITION0;
    float3 vNormal      : TEXCOORD1;
    float4 vColor       : COLOR0;
};

TOutputVertex vsMain(TInputVertex i) {
    TOutputVertex o;

    o.vPosition = mul(float4(i.vPosition, 1), mWorld);
    o.vColor = i.vColor;

    o.vNormal = mul(float4(i.vNormal, 1), mWorld).xyz;

    //o.vColor += pow(dot(normal_world, float3(0, 0, 1)) * 2 + 0.3, 10);

    return o;
}

struct TInputFragment {
    float3 vNormal      : TEXCOORD1;
    float2 vTexCoord    : TEXCOORD0;
    float4 vColor       : COLOR0;
};

struct TOutputFragment {
    float4 vColor       : COLOR0;
};

TOutputFragment psMain(TInputFragment i) {
    TOutputFragment o;

    o.vColor = i.vColor;
    o.vColor += pow(dot(i.vNormal, float3(0, 0, 1)) * 2 + 0.3, 10);

    return o;
}

technique mytech {
    pass p0 {
        //ShadeMode = Flat;
        //ZEnable = false;

        WorldTransform[0] = mWorld;

        VertexShader = compile vs_1_1 vsMain();
        PixelShader = compile ps_2_0 psMain();
    }
}

出现了相同的错误结果。

两个项目中都包含了来自同一个dx sdk的dx文件。同时包含并链接了相同的头文件和库。

我从测试项目中直接复制了加载函数,整个测试项目都是我自己写的。

HRESULT res = D3DXCreateEffectFromFile(device, file_name, NULL, NULL, 0,  0, &effect, &error_buffer);

谷歌上没有找到任何类似的信息。如果您能帮我从我的湿件中删除这个匕首,我将不胜感激。

Antoon

1个回答

5
解决方案:不要创建RTF文件,然后将其重命名并在Wordpad中编辑。Wordpad仍将将其解释为rtf,因为文件以“{\ rtf1}”开头。将其拖入Visual Studio中,将显示真实内容。哦,世界,你是如此有趣。

绝对不要使用文本编辑器来编辑代码。它们会产生一些与编译器期望输出结果完全不同的东西,遵循的是文本格式标准(不同于代码标准),并且没有我们所有人所依赖的大多数 IDE 功能。 - anon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接