私のすべてのSDL/OpenGLプログラムでは、フレームレートが60 fpsで止まっているため、vsyncが有効になっているように見えますが、私やコードや設定では有効ではありません。だから私はそれを無効にする方法があるかどうか、おそらくいくつかの深いmacOS設定で今やりたいですか?
何年も回避策を探した後(そして Brett Hale の助けを借りて)これは私のために働いたものです-私はレンダリングループの開始時にそのコードを追加しました(そしてinit、as Appleは毎回SwapInterval設定をリセットするようです...)そして最終的にフレームレートを非同期にすることができました:
#ifdef __Apple__
GLint sync = 0;
CGLContextObj ctx = CGLGetCurrentContext();
CGLSetParameter(ctx, kCGLCPSwapInterval, &sync);
#endif
<OpenGL/gl.h>
を含めることを忘れないでください
それは最高の解決策ではありませんが、実際に私が見つけた唯一の解決策は魅力のように機能します。
これにより、MacBookProで毎秒約700フレームを取得することができました。
永続的なものでもなく、テスト/ベンチマークに最適です。
SOへようこそ。同様の質問に対するアプローチの概要を説明しました ここ 。ほとんどのMacLCDは60Hzにロックされており、最近のハードウェアは120Hzに制限されていることを考慮する必要があります。 vsyncを無効にすると、CPU/GPUサイクルが無駄になり、ティアリングアーティファクトが発生する可能性があります。