Während ich einige Tests für ein kleines Projekt für iPhone/iPad an der ich arbeite, beobachtete ich, dass es beim Zeichnen von Wireframes mit glDrawElements mit GL_LINES zu großen CPU-Leistungseinbußen kommt .glDrawElements mit GL_LINES erzwingt gleRunVertexSubmitARM? (oder: Warum ist das Zeichnen von Wireframes bei iOS langsam?)
Dies ist das Szenario:
- ein Modell mit 640 Scheiteln (4 Schwimmer für Position, 3 Schwimmer für Normalen, keine Ausrichtungsprobleme ... alle auf 4 Byte Grenzen)
- 3840 Indizes (unsigned short)
- beiden Scheitel und Indizes verwenden VBOs (kein VAO)
- das obige Modell mit glDrawElements mit GL_TRIANGLES gezeichnet funktioniert
Dann:
- gleiche Modell mit 640 Scheiteln
- 2560 Indizes
- VBOs und keine VAO
- mit glDrawElements mit GL_LINES gezogen löst kontinuierliche Anrufe gleRunVertexSubmitARM, CPU-Auslastung Himmel Raketen ...
In beiden Fällen sehen die Modelle wie erwartet und keine glErrors um ...
Es scheint, dass das Problem gerätabhängig ist. Ich erlebe es auf einem iPhone 3GS und iPhone 4, NICHT auf einem iPad 2 noch den Simulatoren. Auf einem iPad 2 frame-time CPU = 1 ms und keine Aufrufe von gleRunVertexSubmitARM, auf einem iPhone 4 frame-time CPU = 12 ms und kontinuierliche Aufrufe von gleRunVertexSubmitARM.
Kann jemand dieses Verhalten erklären oder darauf hinweisen, welche Fehler ich machen könnte?
Jeder Einblick wird sehr geschätzt. Vielen Dank im Voraus,
Franc