Derzeit profiliere ich mein iOS. Alle Aufrufe von glDrawArrays sind teuer. Hier ist zum Beispiel ein Screenshot des Rendering-Teils eines Partikelsystems:
Wie Sie sehen können, nimmt der glDrawArrays
Aufruf von dieser Methode 39% der CPU-Zeit in Anspruch. Während andere Anrufe mögen glUniform1i
und glBindVertexArrayOES
sehr schnell sind. Warum ist nicht glDrawArrays
so schnell wie die anderen? Beginnen nicht alle diese Methoden mit gl***
kurzen Funktionen, die der Treiberwarteschlange einen Befehl hinzufügen? Warum dauert es glDrawArrays
im Vergleich zu allen anderen gl-Anrufen länger, bis ein Anruf zur Warteschlange hinzugefügt wird?
Ist das normal oder bedeutet das, dass ich etwas falsch mache?
Als Antwort auf Doug : Nein, das hat nicht funktioniert. Der Aufruf von glFinish () hat tatsächlich eine Weile gedauert, aber der glDrawArrays
Aufruf nimmt im Vergleich zu den Statusänderungen (wie) immer noch viel Zeit in Anspruch glBindVertexArrayOES
.