是否可以在精灵中使用像素着色器?
我创建了一个简单的像素着色器,它只写红色,用于测试。我已经用 effect.Begin(...)、BeginPass(0) 和 EndPass()、End() 包围了我的 Sprite.DrawImage(tex,...) 调用,但我的着色器似乎没有被使用:我的纹理是正常绘制的。
我不确定您使用的是什么语言。我会假设这是一个 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();