現在、Windows と Mac OS X の両方で動作するゲームを書いています。メインのゲーム ループは次のようになります。
while(running)
{
ProcessOSMessages(); // Using Peek/Translate message in Win32
// and nextEventMatchingMask in Cocoa
GameUpdate();
GameRender();
}
それは明らかに少し単純化されていますが、それがその要点です。アプリケーションを完全に制御できる Windows では、うまく機能します。残念ながら、Apple には Cocoa アプリで独自の方法があります。
Cocoa で最初にメイン ループを実装しようとしたとき、どこに配置すればよいかわからなかったので、この投稿NSApplicationに従って独自のループを作成しました。私は自分の機能に自分の権利を投げかけ、すべてが正しく機能しました。GameFrame()run
しかし、それが「正しい」方法だとは思いません。機能するソリューションをハッキングしようとするのではなく、Apple のエコシステム内でうまく遊びたいと思っています。
Apple のこの記事では、 を使用した古い方法と、 をNSTimer使用した「新しい」方法について説明していCVDisplayLinkます。私はCVDisplayLinkバージョンを接続しましたが、それはただ....奇妙に感じます. ゲームがディスプレイによって駆動されるという考えは好きではなく、その逆ではありません。
CVDisplayLinka を使用するか、自分のものを上書きするオプションは 2 つだけNSApplicationですか? これらの解決策のいずれも、まったく正しくないと感じています。