0

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

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

4

1 回答 1

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();
于 2009-11-19T06:55:23.357 回答