スプライト内でピクセルシェーダーを使用することは可能ですか?
テスト用に、赤い色を書き込むだけの単純なピクセルシェーダーを作成しました。Sprite.DrawImage(tex、...)呼び出しをエフェクトで囲みました。Begin(...)、BeginPass(0)、およびEndPass()、End()ですが、シェーダーが使用されていないようです:Myテクスチャは正常に描画されます。
使用している言語がわかりません。これは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();