私が取り組んでいる iPhone/iPad 用の小さなプロジェクトでいくつかのテストを行っているときに、GL_LINES で glDrawElements を使用してワイヤーフレームを描画すると、CPU パフォーマンスが大幅に低下することがわかりました。
これはシナリオです:
- 640 個の頂点を持つモデル (位置に 4 つの浮動小数点数、法線に 3 つの浮動小数点数、位置合わせの問題なし... すべて 4 バイト境界上)
- 3840 インデックス ( unsigned short )
- 頂点とインデックスの両方が VBO を使用します ( VAO なし)
- GL_TRIANGLES を指定した glDrawElements で描画された上記のモデルは正常に動作します
それで:
- 640頂点の同じモデル
- 2560 インデックス
- VBOあり、VAOなし
- glDrawElements と GL_LINES を使用して描画すると、gleRunVertexSubmitARM への連続呼び出しがトリガーされ、CPU 使用率が急激に上昇します...
どちらの場合も、モデルは期待どおりに見え、glErrors はありません...
問題はデバイスに依存しているようです。私はそれを iPhone 3GS と iPhone 4 で経験していますが、iPad 2 やシミュレーターでは経験していません。iPad 2 のフレーム時間 CPU = 1 ミリ秒で gleRunVertexSubmitARM の呼び出しなし、iPhone 4 のフレーム時間 CPU = 12 ミリ秒で gleRunVertexSubmitARM の連続呼び出し。
誰かがこの動作を説明したり、私が犯している可能性のある間違いを指摘したりできますか?
どんな洞察も高く評価されます。前もって感謝します、
フランチェスコ