Frage

Mit UIView und Quarz hat sich für meine 2D-Spiel zu langsam sein

War es hilfreich?

Lösung

In der Regel in OpenGL gibt es grundsätzlich zwei Möglichkeiten, „Scrollen“ zu tun, das heißt, die angezeigten Inhalte senkrecht zur Blickrichtung verschieben:

  1. Stellen Sie die Anzeige, mit anderen Worten „um die Kamera bewegen“, so dass der Inhalt verschieben.
  2. Verschieben Sie den Inhalt direkt, halten Sie die Kamera fixiert.

Diese sind natürlich völlig gleichwertig, und die Umkehrung voneinander sind.

Wieder zieht der Szene für jeden Rahmen

Diese beiden gehen davon aus, dass Sie vollständig tun. Scrollen in dem mehr „klassischen“ Sinne, indem Sie den Inhalt des Bildspeichers zu kopieren, während sie von einem (dx, dy) Ausgleichsbetrag, ist keine Technik, die sehr geeignet für OpenGL ist.

Im Grunde genommen ein Scrollen Bild erzeugt so einfach sein könnte, einen einzigen texturierten Quad als Zeichnung, und dann Verschieben der Position der es für jeden neuen Rahmen.

Andere Tipps

Wie groß sind Ihre Bilder und wie langsam ist zu langsam? Mit Hilfe eines UIScrollView mit einem enthaltenden UIView, deren Inhalt über Quarz gezogen wird, habe ich in der Lage gewesen zu glatt scrollen Ansichten bis zu 2000 x 2000 groß. Wenn Sie Ihr Bildinhalt jedes Bild, sondern bewegen Sie die Position Ihrer Ansichten und lassen Core Animation machen den Rest neu gezeichnet sind, ich wette, dass Sie in der Lage sein werden, die Art der Leistung, die Sie ohne zu OpenGL fallen wollen runter.

Die meisten 2-D Performance-Probleme, die ich aufgrund von Leuten gesehen habe versucht, alle in drawRect ihre Animation zu tun, ständig ihre Inhalte neu erstellt. Sie wollen einmal zeichnen, und dann nur den Ursprung der gezogenen Ansicht zu bewegen oder Schicht um. Der Inhalt der Ansicht wird als OpenGL Textur zwischengespeichert, so wird es sehr effizient zu animieren um.

Für 2-D Arbeit betrachte ich OpenGL als der letzte Ort, um zu drehen, nachdem Sie alle anderen Alternativen ausgeschöpft haben. Es wird Ihnen viel länger dauern, die gleichen Dinge zu tun, die Sie einfach UIViews und Core Animation verwenden können.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top