/// <summary> /// 毎フレームごとの更新処理を行います。 /// </summary> public void DoEnterFrame(TimeSpan elapsedTime) { if (IsDesignMode) { return; } MakeCurrent(); this.renderBuffer.Clear(); GLElements .Where(_ => _ != null) .ForEach(_ => { // 一時的にZOrderの下駄をはかせます。 this.renderBuffer.BaseZOrder = _.BaseZOrder; _.DoEnterFrame(elapsedTime, this.renderBuffer); }); TextureDisposer.Update(Context); }
/// <summary> /// ハンドルが閉じられたときに呼ばれます。 /// </summary> protected override void OnHandleDestroyed(EventArgs e) { if (IsDesignMode) { base.OnHandleDestroyed(e); return; } GLElements .Where(_ => _ != null) .ForEach(_ => _.Terminate()); GLElements.Clear(); // このOpenGLに登録されているすべてのテクスチャを削除します。 if (this.glInitialized) { // このメソッドに失敗してVisual Studioが落ちることがあるため、 // 念のため例外を潰しておく Util.SafeCall(() => Texture.DeleteAll(Context)); Util.SafeCall(() => TextureDisposer.Update(Context)); } base.OnHandleDestroyed(e); }