私たちは、iphone 4とipad 1で比較的遅いFPSを持つ理由を理解しようとしています。 オープンGL解析:論理バッファロードでこのカテゴリの警告が表示されます。要約は、「低速フレームバッファ負荷」です。推奨することは、レンダリングの前にGPUがフレームバッファをロードする必要があるということです。各フレームの冒頭で全画面クリア操作を実行することに失敗していることを推奨しています。しかし、glClearではこれを行っています。論理バッファロード - 低速フレームバッファロード - ios
[EAGLContext setCurrentContext:_context];
glBindFramebuffer(GL_FRAMEBUFFER, _defaultFramebuffer);
glClear(GL_COLOR_BUFFER_BIT);
// Our OpenGL Drawing Occurs here
... ... ...
// hint to opengl to not bother with this buffer
const GLenum discards[] = {GL_DEPTH_ATTACHMENT};
glBindFramebuffer(GL_FRAMEBUFFER, _defaultFramebuffer);
glDiscardFramebufferEXT(GL_FRAMEBUFFER, 1, discards);
// present render
[_context presentRenderbuffer:GL_RENDERBUFFER];
私たちは、実際の深さやステンシルバッファを使用していません。
テクスチャをレンダリングして新しいタイルをロードするたびに発生します。 glDrawArraysコマンドを指しています。
この警告を取り除く方法についての推奨事項はありますか?
それがすべてで助けている場合、これは我々が層設定する方法です:仕事と審議をたくさんした後
eaglLayer.drawableProperties = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:NO], kEAGLDrawablePropertyRetainedBacking,
kEAGLColorFormatRGB565, kEAGLDrawablePropertyColorFormat,
nil];
私は最適化のポイントとしてその解析ポイントしばらくこれを注意してください、私の経験では、それはかなりマイナー一つとなっています。あなたのアプリケーションがなぜゆっくりとレンダリングされているのかはほとんど分かりません。 OpenGL ESドライバの計測器を見て、レンダラ(フラグメント制限付き)またはタイラー(ジオメトリ限定)を最大限に活用しているかどうかを確認してください。 –
私たちはOpenGL ES計測を実行しました。これは、塗りつぶし率(断片)を最大限に引き出しているようです。可視領域を埋める256×256のタイルのみをレンダリングしています。テクスチャを作成しているのか、テクスチャを設定しているのか、それとも他の目的のために、私たちが見る必要のあるリンゴ固有の拡張子はありますか? – user1687195
これに対する更新として、 を設定します。glHint(GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES、GL_FASTEST); それはFPSでかなり助けになったようです。興味深い。 – user1687195