Example #1
0
        /// <summary>
        ///     レンダリング
        /// </summary>
        public virtual void Render()
        {
            if (!_初期化済み || !Visible)
            {
                return;
            }

            RenderContext.Instance.描画対象にする(ScreenContext);

            ScreenContext.RenderContextにマウス監視を登録する();

            // 進行

            ScreenContext.カメラを移動する();

            // 一定時間が経過していれば、すべてのワールド座標の進行を行う。(経過していないなら何もしない。)
            RenderContext.Instance.Timer.一定時間が経過していればActionを行う(() => {
                RenderContext.Instance.ワールド座標をすべて更新する(ScreenContext);
            });

            FpsCounter.フレームを進める();

            // 描画

            画面をクリアする();

            ScreenContext.ワールド空間.登録されているすべての描画の必要があるものを描画する();

            ScreenContext.SwapChain.Present(0, PresentFlags.None);      // Present

            OnPresented();
        }
Example #2
0
 /// <summary>
 ///     リサイズされた。
 /// </summary>
 private void RenderForm_ClientSizeChanged(object sender, EventArgs e)
 {
     if (ScreenContext != null && RenderContext.Instance.DeviceManager != null)
     {
         ScreenContext.スワップチェーンをリサイズする();
         ScreenContext.行列管理.射影行列管理.アスペクト比 = (float)Width / Height;
     }
 }
Example #3
0
 protected override void OnClientSizeChanged(EventArgs e)
 {
     base.OnClientSizeChanged(e);
     if (!DesignMode && ScreenContext != null)
     {
         ScreenContext.スワップチェーンをリサイズする();
         ScreenContext.行列管理.射影行列管理.アスペクト比 = (float)Width / Height;
     }
 }
Example #4
0
        protected override void OnHandleDestroyed(EventArgs e)
        {
            base.OnHandleDestroyed(e);

            RenderContext.Instance.ControltoScreenContextマップ.Remove(this);

            ScreenContext.Dispose();

            if (RenderContext.Instance.ControltoScreenContextマップ.Count == 0)
            {
                RenderContext.Instance.Dispose();
            }
        }
Example #5
0
        public ScreenContext Initialize(Control targetControl)
        {
            this.Initialize();

            var matrixManager  = this._行列を初期化する();
            var primaryContext = new ScreenContext(targetControl, matrixManager);

            this.ControltoScreenContextマップ.Add(targetControl, primaryContext);

            this.描画ターゲットコンテキスト = primaryContext;
            this._レンダーターゲットを更新する();

            return(primaryContext);
        }
Example #6
0
 /// <summary>
 ///     レンダリング
 /// </summary>
 public virtual void Render()
 {
     if (!IsInitialized || !Visible)
     {
         return;
     }
     RenderContext.Instance.描画対象にする(ScreenContext);
     ScreenContext.カメラを移動する();
     RenderContext.Instance.Timer.一定時間が経過していればActionを行う(() => {
         RenderContext.Instance.ワールド座標をすべて更新する(ScreenContext);
     });
     FpsCounter.フレームを進める();
     ClearViews();
     ScreenContext.ワールド空間.登録されているすべての描画の必要があるものを描画する();
     ScreenContext.SwapChain.Present(0, PresentFlags.None);
 }
Example #7
0
        /// <summary>
        ///     <see cref="T:System.Windows.Forms.Control" /> とその子コントロールが使用しているアンマネージ リソースを解放します。オプションで、マネージ リソースも解放します。
        /// </summary>
        /// <param name="disposing">マネージ リソースとアンマネージ リソースの両方を解放する場合は true。アンマネージ リソースだけを解放する場合は false。</param>
        protected override void Dispose(bool disposing)
        {
            base.Dispose(disposing);

            if (RenderContext.Instance != null)
            {
                RenderContext.Instance.ControltoScreenContextマップ.Remove(this);
            }

            ScreenContext?.Dispose();

            if (RenderContext.Instance != null &&
                RenderContext.Instance.ControltoScreenContextマップ.Count == 0)
            {
                RenderContext.Instance.Dispose();
            }
        }
Example #8
0
        public ScreenContext ScreenContextを作成する(Control control)
        {
            var カメラ = new カメラ(
                カメラの初期位置: new Vector3(0, 20, -40),
                カメラの初期注視点: new Vector3(0, 3, 0),
                カメラの初期上方向ベクトル: new Vector3(0, 1, 0));

            var 射影行列 = new 射影();

            射影行列.射影行列を初期化する((float)Math.PI / 4f, 1.618f, 1, 200);

            var matrixManager = new 行列管理(new ワールド行列(), カメラ, 射影行列);

            var context = new ScreenContext(control, matrixManager);

            this.ControltoScreenContextマップ.Add(control, context);

            return(context);
        }