ピクセルシェーダーを試しているだけです。素敵なぼかし効果を見つけたので、画像を何度もぼかす効果を作成しようとしています。
その方法:ぼかし効果を適用する RenderTarget で画像の hellokittyTexture をレンダリングし、 hellokittyTextureをそのレンダリングの結果に置き換えて、Draw 反復ごとに何度も繰り返します。
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);
GraphicsDevice.SetRenderTarget(buffer1);
// Begin the sprite batch, using our custom effect.
spriteBatch.Begin(0, null, null, null, null, blur);
spriteBatch.Draw(hellokittyTexture , Vector2.Zero, Color.White);
spriteBatch.End();
GraphicsDevice.SetRenderTarget(null);
hellokittyTexture = (Texture2D) buffer1;
// Draw the texture in the screen
spriteBatch.Begin(0, null, null, null, null, null);
spriteBatch.Draw(hellokittyTexture , Vector2.Zero, Color.White);
spriteBatch.End();
base.Draw(gameTime);
}
しかし、「The render target must not be set on the device when it is used as a texture.」というエラーが表示されます。hellokittyTexture = (Texture2D) buffer1;
テクスチャをコピーするのではなく、RenderTarget への参照をコピーするためです (基本的に、割り当て後は同じオブジェクトです) 。
RenderTarget 内のテクスチャを取得する良い方法を知っていますか? または、私がしようとしていることをよりエレガントに行う方法はありますか?