2009-11-19 55 views
0

是否可以在sprite内使用像素着色器?是否可以在sprite内使用像素着色器?

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

回答

0

我不确定你使用的是什么语言。我会认为这是一个XNA问题。

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

是的,你可以加载着色器文件(HLSL,直至并包括在XNA的Shader Model 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(); 
+0

thanx您的回复,但我使用托管DirectX,因此有可能在MDX使用? – Firoz 2009-11-19 07:36:26

+0

是的,没有看到它不应该的原因。为什么不试试呢? – 2009-12-16 07:20:48

相关问题