ハードウェアレンダラーのみを使用するように強制するには、作成時に特定のピクセル形式の属性を指定します。 Technical Q&A QA1502 Ensuring hardware accelerated rendering for your OpenGL applicationに記載されているように:CGLについて
を:
kCGLPFAAccelerated
とkCGLPFANoRecovery
ソフトウェアフォールバックを選択することなく、ハードウェアアクセラレーションレンダラを選択する簡単な方法は、以下のピクセルフォーマット属性を選択することにより、ありますAGLについては
:
AGL_ACCELERATED
とNSOpenGLのために
:
NSOpenGLPFAAccelerated
とNSOpenGLPFANoRecovery
QA1502はまた、あなたがそれを頂点とフラグメント処理のためにGPUを使用しているかどうか内容を尋ねることができる方法を説明します。
AppleのOpenGL Capabilities Tablesに問い合わせると、ターゲットハードウェアでサポートされていない機能を使用しているかどうかを確認できます。この文書には、それぞれ10.7.5,10.8.5および10.9の3つのテーブルが含まれており、それぞれのテーブルは数ページにわたることに注意してください。 MacOS OpenGLのハードウェア機能に10.9以降の変更が加えられていないか、あるいはAppleがそれらを文書化するのを邪魔していない。
AppleのOpenGL for macOS開発者ページにNumbersスプレッドシートとしてテーブルへのリンクもあります。
機能テーブルを調べている場合は、this documentが対象のMacに搭載されているGPUハードウェアを見つけるのに便利です。
OpenGLプロファイラを使用して、OpenGLがアプリケーションから発行しているコールとその時間を知ることができます。これは何が間違っているのかを理解するのに役立ちます。 OpenGL ProfilerはAdditional Tools for Xcodeの一部です。
しかし、実行中のアプリケーションにアタッチしようとするとアプリケーションがクラッシュし、プロファイラを使用してアプリケーションを起動するとアタッチが終了しません。私はWWDC 2017で責任あるAppleエンジニアの問題を調査しました。「Xcode 9ベータ版の追加ツール」のプロファイラはmacOS Sierra 10.12.5では動作しますが、macOS High Sierra 10.13 beta 1では動作しませんでした。 macOS Sierraを実行している場合は、そのバージョンを使用してください。
明らかに問題は、アップルが、これらのエンタイトルメントで署名された新しいプロファイラバージョンを発行せずに、正しく動作するためにプロファイラが必要とする資格(制限)を作成し続けることです。私はHigh Sierraで動作するプロファイラのバージョンがベータ3(おそらくベータ2でも、おそらくはない)で利用できると期待しています。