2009-11-19 7 views
0

Можно ли использовать пиксельный шейдер внутри спрайта?Можно ли использовать пиксельный шейдер внутри спрайта?

Я создал простой пиксельный шейдер, который просто пишет красный цвет, для тестирования . Я окружил свой вызов Sprite.DrawImage (tex, ...) эффектом .Begin (...), BeginPass (0) и EndPass(), End(), , но мой шейдер, похоже, не был Используется: Моя текстура нарисована только нормально.

ответ

0

Я не уверен, какой язык вы используете. Я предполагаю, что это вопрос XNA.

Можно ли использовать пиксельные шейдеры внутри спрайта?

Да, вы можете загрузить файл шейдера (HLSL, вплоть до и включая шейдерной модели 3 в XNA) и вызвать 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

Спасибо за ваш ответ, но я использую Managed DirectX, так что можно использовать в MDX? – Firoz

+0

Да, не вижу причин, по которым это не должно быть. Почему бы просто не попробовать? –