// アプリのメインループ 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); }); }
// アプリのメインループ 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); }); }