예제 #1
0
        // アプリのメインループ
        private void Run(object sender, EventArgs e)
        {
            var timer = Stopwatch.StartNew();
            var fps   = new MikuMikuFlex3.Utility.FPS();

            this._D3D11Device.ImmediateContext.OutputMerger.BlendState        = this._BlendState通常合成;
            this._D3D11Device.ImmediateContext.OutputMerger.DepthStencilState = null;

            SharpDX.Windows.RenderLoop.Run(this, () => {
                if (fps.FPSをカウントする())
                {
                    Debug.WriteLine($"{fps.現在のFPS} fps");
                }

                this._シーン.描画する(timer.ElapsedMilliseconds / 1000.0, this._D3D11Device.ImmediateContext, new SharpDX.Color4(0.2f, 0.4f, 0.8f, 1.0f));

                this._DXGISwapChain.Present(0, SharpDX.DXGI.PresentFlags.None);
            });
        }
예제 #2
0
        // アプリのメインループ
        private void Run(object sender, EventArgs e)
        {
            Application.Idle -= this.Run;   // イベントが複数発生する場合があるのでそれを回避。

            // シーンの描画には「現在時刻」が必要であるため、タイマを準備します。
            var timer = Stopwatch.StartNew();

            // FPSを計測するクラスを生成します(任意)。
            var fps = new MikuMikuFlex3.Utility.FPS();

            // メインループを開始します。
            SharpDX.Windows.RenderLoop.Run(this, () => {
                // FPS を計測し、デバッグ表示します(任意)。

                if (fps.FPSをカウントする())
                {
                    Debug.WriteLine($"{fps.現在のFPS} fps");
                }


                // 既定のレンダーターゲットと既定の深度ステンシルをクリアします。

                var 背景色 = new SharpDX.Color4(0.2f, 0.4f, 0.8f, 1.0f);
                this._D3D11Device.ImmediateContext.ClearRenderTargetView(this._既定のD3D11RenderTargetView, 背景色);
                this._D3D11Device.ImmediateContext.ClearDepthStencilView(this._既定のD3D11DepthStencilView, SharpDX.Direct3D11.DepthStencilClearFlags.Depth | SharpDX.Direct3D11.DepthStencilClearFlags.Stencil, 1f, 0);


                // 時刻を指定して、シーンを描画します。

                var 現在時刻sec = timer.ElapsedMilliseconds / 1000.0;
                this._シーン.描画する(現在時刻sec, this._D3D11Device.ImmediateContext);


                // スワップチェーンを表示します。

                this._DXGISwapChain.Present(0, SharpDX.DXGI.PresentFlags.None);
            });
        }