HLSL:清空fx文件:X3000:意外标记'{'

Ton*_*ony 6 directx hlsl

出现以下错误:Test.fx(1,1):错误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();
    }
}
Run Code Online (Sandbox Code Playgroud)

与结果相同的错误.

在两个项目中包含来自相同dx sdk的dx文件.包括并链接相同的标头和库.

我从测试项目中复制了加载函数.我自己编写了整个测试项目.

HRESULT res = D3DXCreateEffectFromFile(device, file_name, NULL, NULL, 0,  0, &effect, &error_buffer);
Run Code Online (Sandbox Code Playgroud)

谷歌没有出现这样的事情.如果你能从我的湿器上取下匕首,我真的很感激.

安东

Ton*_*ony 5

解决方案:不要创建RTF文件,然后重命名它们并使用wordpad进行编辑.写字板仍会将其解释为rtf,因为该文件以"{\ rtf1}"开头.将其拖入视觉工作室向我展示了真实的内容.哦,世界,你是如此有趣.