NSTimer
を使ってMacOSで簡単なOpenGLゲームを設定しようとしていますが、実行ループをhereのように設定しています。このアイデアは、非常に小さい(〜1ms)時間間隔を持つ繰り返しタイマーを作成し、フレームレートを調整するためにvsyncに依存することです。OpenGL VSync/NSTimerがMacOSで問題
NSOpenGLContext
のスワップ間隔を1に設定しています。これによりvsyncが有効になります。私はこれによって、NSOpenGLContext.flushbuffer
がブロックされるという印象を受けましたが、これは当てはまりません。私のレンダーコードは、毎秒60回以上頻繁に発生しています。
私がリンクしているドキュメントは廃止されているとマークされていますが、私が読んだところでは、NSTimer
ループを何とかディスプレイのリフレッシュレートに絞り込むことが可能です。私はこれを稼働させることができませんでしたが、私はこのアプローチがもはや実行可能ではないかと思います。
何か不足していますか?現代のプロジェクトでは、CVDisplayLink
と一緒に行くのが良いでしょうか?