コード例 #1
0
        /// <summary>
        /// RenderStart()→m_effect->Begin()→m_effect->BeginPass()
        ///  の呼び出した後に呼び出される。この関数後に描画コマンドが呼ばれる。
        /// </summary>
        /// <param name="device"></param>
        /// <param name="immediateContext"></param>
        /// <param name="totalTime">アプリケーションが開始してからの経過時間 (秒単位) です。</param>
        /// <param name="elapsedTime">最後のフレームからの経過時間 (秒単位) です。</param>
        /// <param name="callNum">GetCallRenderNumの数だけ呼び出される。0~x</param>
        /// <param name="passCnt">テクニックのパスカウント</param>
        /// <returns>通常、エラーが発生しなかった場合は 0 を返す。</returns>
        internal override int OnRenderBetweenBefore(SharpDX.Direct3D11.Device device, DeviceContext immediateContext, double totalTime, float elapsedTime, int callNum, int passCnt)
        {
            int hr  = 0;
            int tNo = GetCurrentTechnicNo();

            if (tNo == (int)EffectID.ZoomBloom ||
                tNo == (int)EffectID.DirectionalBloom ||
                tNo == (int)EffectID.Ripple)
            {
                if (passCnt == 0)
                {
                    hr = SetCurrentRenderTargetState(m_hTx, m_oldRenderTarget);
                    // テクスチャーのサーフェイスをクリアする
                    m_hTx.ClearDepthStencilView();
                    m_hTx.ClearRenderTargetView();

                    IsCurrentPassCallDraw2D3D = true;
                }
                else if (passCnt == 1)
                {
                    if (m_effectKind == (int)DCRL.D2S_CONST)
                    {
                    }
                    else
                    {
                        // 現在のカメラ座標を取得
                        MCVector3 v = GetCurrentCamera().EyePt;
                        m_drawSprite.Position = new MCVector3(v.X, v.Y, 0.0f);
                    }

                    DrawingSprite(m_drawSprite, GetSpriteTypeNo());
                    IsCurrentPassCallDraw2D3D = false;
                }
            }
            else
            {
                // if (m_effectKind == DCRL_2DS_CONST)
                // {
                //  int n;
                //  n = 9;
                // }
                // else
                // {
                //  // 現在のカメラ座標を取得
                //  const MCVector3 v = this.GetCurrentCamera().EyePt;
                //  m_hDrawSprite.Position(MCVector3(v.x, v.y, 0.0f));
                // }
                IsCurrentPassCallDraw2D3D = true;
            }
            if (tNo == (int)EffectID.DisolveTransition ||
                tNo == (int)EffectID.RadialBlurTransition)
            {
                //SetDiffuse
                //Diffuse2DTexture = m_hTx;
            }
            return(hr);
        }
コード例 #2
0
        /// <summary>
        /// レンダー開始の初期処理をここに書く
        ///  GetCallRenderNumの数だけ呼び出される。
        /// </summary>
        /// <param name="time">アプリケーションが開始してからの経過時間 (秒単位) です。</param>
        /// <param name="elapsedTime">最後のフレームからの経過時間 (秒単位) です。</param>
        /// <param name="callNum">GetCallRenderNumの数だけ呼び出される。0~x</param>
        /// <returns>通常、エラーが発生しなかった場合は 0 を返す。</returns>
        internal override int OnRenderStart(SharpDX.Direct3D11.Device device, DeviceContext immediateContext, double totalTime, float elapsedTime, int callNum)
        {
            int hr = 0;

            //---------------------------------------------------------------
            // レンダーターゲット変更など
            if (callNum == 0)
            {
                m_hTx.ClearDepthStencilView();
                m_hTx.ClearRenderTargetView(new Color4(0, 0, 0, 0));

                GetCurrentViewPort(out m_aOldVP);
                SetCurrentViewPort(ref m_aVP);
                SetCurrentRenderTargetState(m_hTx, m_oldRenderTarget);
            }

            return(hr);
        }
コード例 #3
0
        /// <summary>
        /// レンダー開始の初期処理をここに書く
        ///  GetCallRenderNumの数だけ呼び出される。
        /// </summary>
        /// <param name="time">アプリケーションが開始してからの経過時間 (秒単位) です。</param>
        /// <param name="elapsedTime">最後のフレームからの経過時間 (秒単位) です。</param>
        /// <param name="callNum">GetCallRenderNumの数だけ呼び出される。0~x</param>
        /// <returns>通常、エラーが発生しなかった場合は 0 を返す。</returns>
        internal override int OnRenderStart(SharpDX.Direct3D11.Device device, DeviceContext immediateContext, double totalTime, float elapsedTime, int callNum)
        {
            int hr = 0;

            // レンダーターゲットおよびz-バッファーを取り除いてください。
            if (callNum == 0)
            {
                immediateContext.ClearDepthStencilView(App.DepthView, DepthStencilClearFlags.Depth | DepthStencilClearFlags.Stencil, 1.0f, 0);
                immediateContext.ClearRenderTargetView(App.BackBufferView, new Color4(0, 0, 0, 0));

                // 2D_main_screen
                m_mainScreenTx.ClearDepthStencilView();
                m_mainScreenTx.ClearRenderTargetView(new Color4(1, 0, 0, 0));

                SetCurrentRenderTargetState(m_mainScreenTx, m_oldRenderTarget);

                //var t = App.CameraMgr.Get4VCameraNo(0);
                //MCTextureCamera defC = (MCTextureCamera)t;
            }
            return(hr);
        }