/// <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); }
/// <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); }
/// <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); }