Проблема с компиляцией любого эффекта HLSL - PullRequest
1 голос
/ 30 апреля 2010

Мой код:

FileStream fs = new FileStream("ImageProcessing.fx", FileMode.Open,FileAccess.Read);
        CompiledEffect compiledEffect = Effect.CompileEffectFromFile(fs, null, null, CompilerOptions.None, TargetPlatform.Windows);
        fs.Close();
        effect = new Effect(graphics.GraphicsDevice, compiledEffect.GetEffectCode(), CompilerOptions.None, null);

и мой файл fx:

float4x4 xViewProjection;

struct VertexToPixel
{
float4 Position     : POSITION;
float4 Color        : COLOR0;
};

struct PixelToFrame
{
    float4 Color        : COLOR0;
};

    VertexToPixel SimplestVertexShader( float4 inPos : POSITION, float4 inColor : COLOR0)
{
    VertexToPixel Output = (VertexToPixel)0;

    Output.Position =mul(inPos, xViewProjection);

     Output.Color = inColor;

     return Output;
 }

 PixelToFrame OurFirstPixelShader(VertexToPixel PSIn)
 {
     PixelToFrame Output = (PixelToFrame)0;    

     Output.Color = PSIn.Color;    

     return Output;
 }

 technique Simplest
 {
     pass Pass
     {
         VertexShader = compile vs_2_0 SimplestVertexShader();
         PixelShader = compile ps_2_0 OurFirstPixelShader();
     }
 }

Это так просто, что не должно вызывать проблем, но есть такая ошибка:

ID3DXEffectCompiler: There were no techniques
ID3DXEffectCompiler: Compilation failed

Где ошибка? Кажется, есть проблема с чем-то другим, но я не знаю где, потому что другие примеры тоже не компилируются. Может быть, какой-то неверный символ? Но где? Или вводить нужно в формате unix?

1 Ответ

3 голосов
/ 30 апреля 2010

у компилятора HLSL проблемы, если кодировка файла, который вы пытаетесь скомпилировать, неверна, а также если вы не используете правильные символы новой строки. например:

...