私は2Dタイルベースのゲームを開発しており、iPad 3で実行している場合でも約10〜15 FPSになるため、現在パフォーマンスの問題に苦しんでいます。OpenGLESフレームキャプチャは、フレームごとに689回glDrawElementsを呼び出していることを示しています。たくさんありますか?パフォーマンスが低い場合でしょうか?
すべてを1つの巨大な配列にスタックし、1回の描画呼び出しを実行する必要がありますか?それは何か違いがありますか?
私は2Dタイルベースのゲームを開発しており、iPad 3で実行している場合でも約10〜15 FPSになるため、現在パフォーマンスの問題に苦しんでいます。OpenGLESフレームキャプチャは、フレームごとに689回glDrawElementsを呼び出していることを示しています。たくさんありますか?パフォーマンスが低い場合でしょうか?
すべてを1つの巨大な配列にスタックし、1回の描画呼び出しを実行する必要がありますか?それは何か違いがありますか?
この時点で、現在、コマンドの問題によって制限されています(想定)。openglパフォーマンス探偵を実行する場合(xcode(右クリック、開発者ツールを開く)の下にあり、設定からダウンロードする必要がある場合があります)。
あなたの目標は、一日の終わりに充填率によって制限されることです、ここにあなたがそこに着くのを助けるためのいくつかのヒントがあります
すべてのスプライトを描画深度ブレンドモードテクスチャIDで並べ替えます
並べ替えたら、すべてのスプライトを1つの頂点バッファオブジェクトとインデックスバッファオブジェクトにパックします。
描画深度、ブレンドモード、またはテクスチャIDが変更された場合は、新しい描画呼び出しを行い、それらのリソースをバインドする必要があります。
また、スプライトでは、頂点がCPU側(pos x mvp)でフラットになっている必要があり、マトリックスを送信したり、色などの他の属性を頂点の一部にしたりしないようにする必要があることにも注意してください。
典型的な頂点
{
float pos[3]
int color
float uv[2]
}