是否可以在精灵中使用像素着色器?
我创建了一个简单的像素着色器,只是为了写红色 测试。 我把我的Sprite.DrawImage(tex,...)调用包围了 effect.Begin(...),BeginPass(0)和EndPass(),End(), 但是我的着色器似乎没有被使用:我的纹理被绘制出来 通常
答案 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();