是否可以在精灵中使用像素着色器?

时间:2009-11-19 06:29:04

标签: directx effects shader sprite

是否可以在精灵中使用像素着色器?

我创建了一个简单的像素着色器,只是为了写红色 测试。 我把我的Sprite.DrawImage(tex,...)调用包围了 effect.Begin(...),BeginPass(0)和EndPass(),End(), 但是我的着色器似乎没有被使用:我的纹理被绘制出来 通常

1 个答案:

答案 0 :(得分:0)

我不确定您使用的语言是什么。我会假设这是一个XNA问题。

  

是否可以使用像素着色器   精灵里面?

是的,您可以加载着色器文件(HLSL,最多包括XNA中的着色器模型3)并使用它来调用spritebatch。

如果您发布示例代码,我们将更容易查看是否有任何设置不正确。但是,看起来你的东西顺序正确。我会检查着色器代码。

您的应用程序代码应如下所示:

Effect effect; 
effect = Content.Load<Effect> ("customeffect"); //load "customeffect.fx"
effect.CurrentTechnique = effect.Techniques["customtechnique"];

effect.Begin();

foreach (EffectPass pass in effect.CurrentTechnique.Passes)
 {
     pass.Begin();

     spriteBatch.Begin(SpriteBlendMode.AlphaBlend, SpriteSortMode.Immediate, SaveStateMode.None);

     spriteBatch.Draw(texture, Vector2.Zero, null, Color.White, 0, new Vector2(20, 20), 1, SpriteEffects.None, 0);

     spriteBatch.End();

     pass.End();
 }

 effect.End();