PSSMDemo.GaussianBlur.Filter C# (CSharp) Method

Filter() public method

ブラーを適用します。 内部では、まず水平方向を処理し、これを内部レンダ ターゲットへ描画します。 続いて、内部レンダ ターゲットに対して垂直方向を処理し、これを指定のレンダ ターゲットへ描画します。
public Filter ( Microsoft.Xna.Framework.Graphics.Texture2D source, RenderTarget2D destination ) : void
source Microsoft.Xna.Framework.Graphics.Texture2D ブラー対象テクスチャ。
destination Microsoft.Xna.Framework.Graphics.RenderTarget2D 結果の描画先となるレンダ ターゲット。
return void
        public void Filter(Texture2D source, RenderTarget2D destination)
        {
            var previousBlendState = GraphicsDevice.BlendState;
            var previousDepthStencilState = GraphicsDevice.DepthStencilState;
            var previousRasterizerState = GraphicsDevice.RasterizerState;
            var previousSamplerState = GraphicsDevice.SamplerStates[0];

            GraphicsDevice.BlendState = BlendState.Opaque;
            GraphicsDevice.DepthStencilState = DepthStencilState.None;
            GraphicsDevice.RasterizerState = RasterizerState.CullCounterClockwise;
            GraphicsDevice.SamplerStates[0] = SamplerState.LinearClamp;

            Filter(source, backingRenderTarget, GaussianBlurEffectPass.Horizon);
            Filter(backingRenderTarget, destination, GaussianBlurEffectPass.Vertical);

            GraphicsDevice.SetRenderTarget(null);

            // ステートを以前の状態へ戻す。
            GraphicsDevice.BlendState = previousBlendState;
            GraphicsDevice.DepthStencilState = previousDepthStencilState;
            GraphicsDevice.RasterizerState = previousRasterizerState;
            GraphicsDevice.SamplerStates[0] = previousSamplerState;
        }

Same methods

GaussianBlur::Filter ( Microsoft.Xna.Framework.Graphics.Texture2D source, RenderTarget2D destination, GaussianBlurEffectPass direction ) : void