0

Core Image が正常に「高速化」されていても、GPU では処理できず、ソフトウェア レンダラーにフォールバックする Cocoa Quartz コンポジションと GPU の組み合わせがあるような気がします。このような状況をどのように検出しますか?

または、より一般的には、コンポジションを実際に再生して FPS を測定することなく、特定のサイズの特定のコンポジションを処理するにはマシンの処理能力が低すぎることをどのように検出すればよいでしょうか?

(非表示のウィンドウでコンポジションを再生して FPS を測定することは、QCView がその状況を検出し、操作全体またはその一部を最適化する可能性があるため、うまくいかない可能性があります。また、今日それを行わなかったとしても、それを開始する可能性があります。 Apple からの次の更新では、信頼できない解決策になります。)

更新:徹底するために、順序付けされたが適切なサイズのウィンドウでコンポジションをフル解像度でテスト レンダリングするコードをいくつか作成し、レンダリングを強制的に[self startRendering];[self snapshotImage];[self stopRendering];. これには、最初は合理的に見えた時間がかかりましたが、このテストの実行では、遅いマシンが速いマシンよりも高速であることが判明しました。;) 実際には、低速のマシンはわずか 2.24 FPS で構成をレンダリングしますが、高速のマシンでは 27 FPS です。

4

1 に答える 1

1

弱いシステム用の簡単なフォールバック アニメーションを作成できるように、あなたが求めていると思いますか?

GPU チップセット検出に記載されているように、1 つのオプションとして、ユーザーのハードウェア文字列を確認することができます 。

glGetStringは、GL_VENDOR、GL_RENDERER、GL_VERSION、または GL_EXTENSIONS を返すことができます。理論的には、GL_VENDOR を使用して Intel GMA が遅すぎることを識別したり、GL_RENDERER を既知のパフォーマンスの低い GPU のリストと比較したりできます。10.6 以降のみのコードを作成している場合は、Intel Mac で使用されている GPU と比較するだけでよいため、リストが長くなりすぎないようにする必要があります。

これはあなたが探しているエレガントなソリューションではないかもしれませんが、うまくいくはずです。また、必要に応じて、高品質または低品質のグラフィックを選択するオーバーライドをユーザーに提供します。

于 2011-02-12T01:56:34.193 に答える