/// <summary> /// 使用中のリソースをすべてクリーンアップします。 /// </summary> /// <param name="disposing">マネージ リソースが破棄される場合 true、破棄されない場合は false です。</param> protected virtual void Dispose(bool disposing) { if (Disposed) { return; } Disposed = true; MyTimer.Enabled = false; if (DrawerAry != null) { DrawerAry.Clear(); DrawerAry.Dispose(); DrawerAry = null; } if (Camera != null) { Camera.Dispose(); Camera = null; } if (World != null) { World.Clear(); World.Dispose(); World = null; } if (FieldValueSetter != null) { FieldValueSetter.Clear(); FieldValueSetter.Dispose(); FieldValueSetter = null; } if (Ls != null) { Ls.Clear(); Ls.Dispose(); Ls = null; } if (Prec != null) { Prec.Clear(); Prec.Dispose(); Prec = null; } }
/// <summary> /// コンストラクタ /// </summary> public MainLogic() { Disposed = false; Camera = new CCamera(); DrawerAry = new CDrawerArrayField(); World = new CFieldWorld(); FieldValueSetter = new CFieldValueSetter(); Ls = new CLinearSystem_Field(); Prec = new CPreconditioner_ILU(); // Glutのアイドル時処理でなく、タイマーで再描画イベントを発生させる MyTimer.Tick +=(sender, e) => { Glut.glutPostRedisplay(); }; MyTimer.Interval = 1000 / 60; }