Frage

Ich brauche den Hintergrund für einen 2D-Raum-Scrolling-Shooter zu zeichnen. Ich brauche drei Schichten der Sterne zu implementieren. Einen fernen Nebel (Bewegungs wirklich langsam) im Hintergrund, eine Schicht von weit entfernten Sternen (bewegten langsam) und eine Schicht aus der Nähe Sternen (moving normal) auf der Oberseite der beiden andere

Die Art, wie ich dies zuerst versucht wurde mit 3 Texturen von 320 x 480, die transparente PNGs der Sterne waren. Ich benutzte GL_BLEND und SRC_ALPHA, ONE_MINUS_SRC_ALPHA.

Die Ergebnisse waren nicht groß, auch auf dem 3GS. Auf der ersten Generation Geräte die FPS fiel auf 40..50 so glaube ich, dass ich dies falsch mache.

Wenn ich deaktivieren Sie die GL_BLEND alles super funktioniert sogar auf den 1. GEN-Geräte und die FPS ist zurück bis 60 wieder ... so ist es muß die Tatsache sein, dass ich große transparente Texturen belnd bin versucht.

Das Problem ist, ich weiß nicht, wie es eine andere Art und Weise zu tun ...

Soll ich ziehe nur den ersten Nebel wie eine undurchsichtige Textur und dann versuchen, die Mitte und Topstar Schicht zu emulieren mit kleinen Punkten auf dem Bildschirm zu verschieben?

Gibt es einen anderen Ansatz auf dem Misch Problem? Wie kann ich den Rendering-Prozess beschleunigen? Ist eine große Textur (tileset) die Antwort?

Bitte helfen Sie mir Weil ich hier bin stecken, und ich kann nicht raus.

War es hilfreich?

Lösung

Ich weiß nicht, wie Sie Ihre Sterne aussehen soll, aber Sie könnten versuchen wollen, dass sie aus einer Textur zu bewegen, indem auf die Geometrie GL_POINTS im DrawElements oder DrawArrays mit vielleicht nur die beiden oberen Schichten mit Schichten von Geometrie ersetzen . Sie können die Punkte mit PointSize, PointSizePointerOES und PointParameter manipulieren, um die Wiedergabe der Punkte zu ändern.

Andere Tipps

Sie möchten vielleicht Multi-Texturing verwenden, um zu sehen, ob das beschleunigt sie. Jede Multitexturstufe kann eine einzigartige Transformationsmatrix zugeordnet werden, so sollten Sie in der Lage sein, jede Schicht mit unterschiedlichen Geschwindigkeiten zu übersetzen.

Ich glaube, alle iPhone-Modelle zwei Texturstufen unterstützen, so sollten Sie in der Lage sein, zwei Ihre Schichten in einen einzigen Zeichenaufruf zu kombinieren. Sie könnten noch für die dritte Schicht Vermischung greifen müssen.

Beachten Sie auch, dass alpha Test schneller als alpha könnte Blending .

Viel Glück!

Die Rückseite Nebel sollte auf jeden Fall undurchsichtig sein; alles andere wird immer oben drauf gezogen, und ich nehme an das einzige, was dahinter ist schwarz. Außerdem hat prideout einen Punkt: vorausgesetzt, Ihre Sternschicht effektiv 1-Bit-alpha, das ist definitiv etwas, das Sie versuchen können. Gelingt das nicht, die GL_POINTS Technik Harald erwähnt auch funktionieren würde.

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