2011-01-17 14 views
4

iOS 4のiPhoneとiPadでフル・シーン・アンチエイリアスを行うためにマルチサンプリングを試してきました。一般的な仕組みはAppleのAPPLE_framebuffer_multisample拡張子(http://www.khronos.org/registry/gles/extensions/APPLE/APPLE_framebuffer_multisample.txt)を使用し、この質問の答え:How do you activate multisampling in OpenGL ES on the iPhone?で説明されています。アップルの「OpenGL ESプログラミングガイド」を参照してください。マルチサンプルアンチエイリアスをiOSで使用するとパフォーマンスにどのような影響がありますか?

これは説明したように機能しますが、サンプル数を2に設定すると、テストアプリケーションの描画パフォーマンスが約50%低下します。主にiPhone 4でテストしています。応用。 Appleが提供している他のパフォーマンス提案(glDiscardFramebufferEXTを使用してマルチサンプルフレームバッファに添付されたレンダバッファを破棄し、glClearを使用してフレームの先頭でフレームバッファ全体をクリアするなど)を使用しています。

この方法でマルチサンプリングを有効にするパフォーマンスオーバーヘッドは、私にとっては驚くほど大きくなります。あなたは似たような結果を見ていますか、これは私が間違って何かをしていることを示唆していますか?

答えて

1

サンプル数を2に設定すると、パフォーマンスが約50%低下することは驚くことではありません。サンプルを2回描画しています。マルチサンプリングとは、本質的にスクリーンよりも高い解像度でシーンを画面外のバッファに描画し、次にフィルタリングアルゴリズムを使用して、解像度の高いマルチサンプルバッファを表示画面の解像度に縮小します。実際には、シングルサンプリングされたバージョンよりも詳細なもの(フィルタリングされた高解像度出力)が含まれています。

これは、グラフィックスでは非常に一般的ではないにしても、パフォーマンス上の問題です。描画するサンプルが多いほど、処理速度は遅くなります。

2

iPhone 4でこれを実行しているとお伝えしました。あなたのOpenGL ESレイヤーレンダリングは、完全2倍網膜ディスプレイの倍率でですか?つまり、OpenGL ESホスティングレイヤのcontentScaleFactor[[UIScreen mainScreen] scale]に設定しましたか?そうであれば、多数のピクセルを開始するようにプッシュしています。

マルチサンプリングされたアンチエイリアスを適用する前に塗りつぶし率が制限されていますか?チェックするには、実行中のアプリケーションに対してInstrumentのOpenGL ES機器を使用し、Tiler UtilizationとRenderer Utilizationの統計を有効にします。アプリケーションでMSAAを有効にせずに高いレンダラー使用率が示されている場合は、開始レートに制限があります。 MSAAを追加すると、このボトルネックのためにフレームレートが大幅に低下する可能性があります。

幾何学的に制限されていたアプリケーションでは、塗りつぶしレートに制限はありませんでしたが、iPhone 4で4X MSAAを使用すると、それほど減速しませんでした。私はあなたのボトルネックがアプリケーションがピクセルを画面に押し込んでいる。

関連する問題