解決できない問題に遭遇しました。同じ効果を複数回使用しながらテクスチャを描画する必要があります。私はこのようなことを達成しようとしています:
spriteBatch.Begin();
// Use the effect multiple times with a different parameter:
lightEffect.Parameters["parameter"].SetValue(value1);
lightEffect.CurrentTechnique.Passes[0].Apply();
lightEffect.Parameters["parameter"].SetValue(value2);
lightEffect.CurrentTechnique.Passes[0].Apply();
spriteBatch.Draw(texture, new Vector2(0, 0), Color.White);
spriteBatch.End();
2 番目の効果のみが使用されます。そのため、毎回エフェクトを使用して RenderTarget をそれ自体に複数回再描画することにしましたが、それも惨めに失敗します"The render target must not be set on the device when it is used as a texture"
。
graphicsDevice.SetRenderTarget(tempRenderTarget);
spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend);
spriteBatch.Draw(texture, new Vector2(0,0), Color.White);
spriteBatch.End();
foreach (Value value in values)
{
spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend);
lightEffect.Parameters["paramter"].SetValue(value);
lightEffect.CurrentTechnique.Passes[0].Apply();
spriteBatch.Draw(tempRenderTarget, new Vector2(0, 0), Color.White);
spriteBatch.End();
}