Directx 可以在精灵内部使用像素着色器吗?

Directx 可以在精灵内部使用像素着色器吗?,directx,effects,shader,sprite,Directx,Effects,Shader,Sprite,可以在精灵内部使用像素着色器吗 我创建了一个简单的像素着色器,只写红色,例如 测试。 我已经包围了我的精灵。DrawImage(tex,…)呼叫 effect.Begin(…)、BeginPass(0)和EndPass()、End(), 但我的着色器似乎没有被使用:我的纹理只是绘制出来的 正常情况下。我不确定您使用的是哪种语言。我假设这是一个XNA问题 可以使用像素着色器吗 在雪碧里面 是的,您可以加载着色器文件(HLSL,XNA中最多包括着色器模型3)并使用它调用spritebatch 如果您

可以在精灵内部使用像素着色器吗

我创建了一个简单的像素着色器,只写红色,例如 测试。 我已经包围了我的精灵。DrawImage(tex,…)呼叫 effect.Begin(…)、BeginPass(0)和EndPass()、End(), 但我的着色器似乎没有被使用:我的纹理只是绘制出来的
正常情况下。

我不确定您使用的是哪种语言。我假设这是一个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();
效应;
效果=内容加载(“自定义效果”)//加载“customeffect.fx”
effect.currenttechnic=effect.technics[“customtechnic”];
Begin()的效果;
foreach(EffectPass-in-effect.currentTechnology.passs)
{
pass.Begin();
spriteBatch.Begin(SpriteBlendMode.AlphaBlend,SpriteSortMode.Immediate,SaveStateMode.None);
spriteBatch.Draw(纹理,矢量2.0,空,颜色.白色,0,新矢量2(20,20),1,SpriteEffects.None,0);
spriteBatch.End();
pass.End();
}
效果。结束();

Thanx谢谢您的回复,但我使用的是托管DirectX,因此可以在MDX中使用?是的,我看不出任何不应该使用的理由。为什么不试试呢?