Можно ли использовать пиксельный шейдер внутри спрайта? - PullRequest
0 голосов
/ 19 ноября 2009

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

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

1 Ответ

0 голосов
/ 19 ноября 2009

Я не уверен, какой язык вы используете. Я предполагаю, что это вопрос 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();
...