macOS版 ディスプレイリンク対応
利用するフレームワークに CoreVideo.framework を追加する。
Targets / MIDITrail / General Linked Frameworks and Libraries
メンバ変数にOpenGLコンテキストとディスプレイリンクを追加(m_pOpenGLContext, m_DisplayLinkRef)。 FPS算出用メンバ変数を追加(m_PrevFPSUpdateTime, m_DrawCount)。
追加したメンバ変数の初期化処理を追加。
ディスプレイリンクの解放処理を追加。
基底クラスのメソッド呼び出し [super prepareOpenGL] を追加。これまで呼び出し忘れていた。 ディスプレイリンクの生成と初期設定の処理を追加。
描画スレッド起動処理を削除して、ディスプレイリンク開始処理を追加。 FPS算出用メンバ変数初期化処理を追加。
描画スレッドへのメッセージ送信処理を削除して、ディスプレイリンク停止処理を追加。
シーン一時停止メソッドを追加。 ディスプレイリンク処理を停止する。
シーン再開メソッドを追加。 ディスプレイリンク処理を開始する。 FPS算出用メンバ変数初期化処理を追加。
ディスプレイリンクコールバック関数を追加。 ディスプレイリンクのスレッドから呼び出される。 シーン描画処理を実行する。
これまで独自スレッドでシーン描画処理のループを行なっていたが、 ループを取りやめ、描画処理を1回実施するだけで終了とする。 OpenGLコンテキストのロックとコンテキストの取得を、シーン描画処理の最上位に位置する本メソッドで行う。
OpenGLコンテキストのロックとコンテキストの取得を上位メソッドに移管するため、本メソッドから削除する。
シーン停止のメッセージ対応処理を削除。 ディスプレイリンクの停止により、描画スレッドを停止することができるようになったため。
独自スレッドでループする際の待機メソッドを削除。
独自スレッドを廃止したことに伴い、FPSの算出ロジックを変更。
フルスクリーン開始前にシーンの一時停止メソッド呼び出しを追加する。(ディスプレイリンク停止)
フルスクリーン開始後にシーンの再開メソッド呼び出しを追加する。(ディスプレイリンク開始)
フルスクリーン終了前にシーンの一時停止メソッド呼び出しを追加する。(ディスプレイリンク停止)
フルスクリーン終了後にシーンの再開メソッド呼び出しを追加する。(ディスプレイリンク開始)
スペルミスを修正(リファクタリング)。ただしこの処理が呼び出されることはない。
変更前:pTitle = @"MIDItrail"; 変更後:pTitle = @"MIDITrail";
シーン停止メッセージクラスを削除。
独自スレッドによる描画処理から、ディスプレイリンクを用いた描画処理に移行する。
ディスプレイリンク移行の背景は以下チケット参照。