1

iO6 / iPad3で大きなモデル(約130K verts)をレンダリングすると、驚くべき結果が得られます。

背景情報は次のとおりです。

  1. glDrawElementsで描画された5つのバッチで、インターリーブされていない(私が知っている悪い)130kの頂点
  2. 頂点は、GL_STATIC_DRAW VBOの位置(3フロート)、通常(3バイト)、色(4バイト)です。
  3. 頂点の状態は、フレームの開始時にVAOで設定されます。
  4. glClearは、フレームの先頭で呼び出されます。
  5. アプリはGLKViewControllerを使用してGLフレームワークを処理しています。

結果、Xcodeプロファイルビューレポート:

  1. 約3fps。
  2. GPU使用率は約7%です。タイラーは2%、レンダラーは5%です。
  3. CPU時間はフレームあたり360ミリ秒、GPUは25です。

機器を使用してさらにプロファイリングすると、glRunVertexSubmitARM(glDrawElementsから呼び出される)と呼ばれる内部GL関数が最も時間がかかっていることが報告されます。何が起きてる?私の入力データは非常に悪いので、GLはすべてのフレームでそれを素敵な形式に変更するのに時間を費やしていますか?

4

1 に答える 1

3

それがまさに起こっていることです。すべての頂点属性が4バイト境界で始まることを確認してください(法線にパディングバイトを追加してください)。

于 2013-02-07T01:32:11.110 に答える