2009-07-16 2 views
7

Derzeit habe ich eine Benutzeroberfläche, die unglaubliche Kernanimation nutzt. Ich frage mich, ob es sich lohnt, weitere 2 Monate für das Erlernen von openGL ES zu investieren? Verbessert das wirklich die Zeichenleistung für 2D-Oberflächen? Ich habe keine 3D-Objekte, sondern sehr animierte 2D-Objekte. Manchmal mit 3D-Verzerrungen, vielen Rotationen und Skalierungen.Hat openGL ES eine bessere Performance als Core Animation und UIKit, wenn es um stark animierte Benutzeroberflächen geht?

Insbesondere habe ich ein ganzes Spiel mit vielen Sprites nur mit CA. Leistung ist in Ordnung, aber nicht perfekt.

Antwort

3

Es hängt davon ab, was Sie tun und welches Gerät Sie anvisieren. Wenn Sie Dinge tun, die von einer programmierbaren Grafikpipeline profitieren würden und auf das iPhone 3GS abzielen, könnten Sie vielleicht einen Vorteil sehen, einfach weil diese Funktionalität nicht durch CoreAnimation verfügbar gemacht wird, so dass Sie es auf seltsame Art und Weise tun müssen Bilder usw.). Die iPhone 3G-Hardware verfügt nicht über programmierbare Shader. Wenn also Ihre Effekte in Form von Shadern ausgedrückt werden, die zu OpenGL wechseln, wird dies auf älteren Telefonen nicht möglich sein.

Wenn alles, was Sie tun, ist Verschieben, Drehen und Skalieren von 2D-Oberflächen dann Coreanimation wird sehr ähnlich Leistung zu OpenGL geben, etwas besser oder schlechter, je nachdem, wie Sie Ihre Daten in die Schichten immer usw.

5

Theoretisch sollte OpenGL die schnellste API auf dem Gerät sein, einfach weil es der Hardware am nächsten ist. (Jemand korrigiert mich bitte, wenn ich falsch liege.) In OpenGL können Sie einige schlaue Tricks machen, die Ihrer Leistung ein wenig helfen - Sie können die Sprites in Stapeln zeichnen, Sie können Punktsprites verwenden, Sie können versuchen, die Texturen zu komprimieren etc.

Auf der anderen Seite kommt man der Hardware sehr nahe und es gibt nicht viel Abstraktion, zumindest im Vergleich zu Core Animation. Du musst mit Texturen umgehen, die nichts mit der Macht zu tun haben, Projektionen, Matrizen, du musst den Animationscode selbst schreiben usw. Es gibt viele Orte, an denen du schief gehen und die Leistung ernsthaft töten kannst, anstatt sie besser zu machen.

Was ich an OpenGL mag, ist, dass es plattformübergreifend ist. Es gibt viele Ressourcen über OpenGL, es gibt viel Platz für Verbesserungen. Wenn Sie Spiele schreiben und OpenGL lernen möchten, tun Sie es. Die OpenGL-Grundlagen in ein OOP-Design zu verpacken ist nicht so schwer und schließlich wird mehr Platz für Leistungsverbesserungen zur Verfügung stehen. Ein guter Anfang ist der Cocos 2D engine for iPhone.


(Disclaimer: Ich weiß nur, ein wenig über OpenGL und nicht viel über Core Animation ich zwei für OpenGL iPhone mit Hilfe von 2D-Spiele geschrieben habe..)

4

ich die gleichen Fragen von Menschen gebeten, WWDC letzten Monat und die Antwort war definitiv ja - wenn Sie sich Zeit nehmen, OpenGL auf einem niedrigen Niveau zu verwenden, werden Sie bessere Leistung für 2D bekommen.

Verwandte Themen