Ich bin verwirrt, was der beste Ansatz ist, wenn Sie ein Spiel für das iPhone schreiben. Das Spiel wird mit OpenGL gerendert, aber ich bin neugierig beim Erstellen der Startbildschirm, Menü, High Score Seite, etc. Machen Sie all das mit OpenGL oder erstellen Sie zusätzliche UIViews und verwenden Sie den UIKit?IPhone OpenGL ES einzelne oder mehrere Ansichten?
Antwort
Ich glaube nicht, dass es einen besten Ansatz gibt. Wenn Sie Zeit haben, Menüs und Highscore-Tabellen in OpenGL zu kodieren, haben Sie viel mehr Flexibilität - Sie könnten beispielsweise eine 3D-Animation im Hintergrund haben.
Wenn Sie Menüs, Highscore-Tabellen usw. mit Standard-UIKit-Ansichten kodieren und die OpenGL-Ansicht während der Anzeige ausschalten, hat dies den Vorteil, dass es sehr schnell zu programmieren ist (vor allem wenn Sie sich die Zeit genommen haben) Interface Builder zu verwenden), aber es ist inhärent 2d. Auch wenn Sie weiterhin benutzerdefinierte Schaltflächengrafiken und Schriftarten verwenden können, um sie weniger wie eine Business-App aussehen zu lassen, wird sie im Vergleich zu anderen Spielen im App Store immer noch weniger elegant aussehen.
Was Sie nicht tun möchten, ist eine transparente UIView über die Spitze von Ihnen OpenGL-Ansicht - das wird sehr langsam sein.
Ich persönlich benutze Interface Builder generierte Ansichten, um Dinge wie Menüs zu bekommen, während ich den Rest des Programms baue. Die Absicht ist, das später durch OpenGL-animierten Code zu ersetzen. Am Ende hängt es jedoch wirklich davon ab, wie viel Zeit Sie zur Verfügung haben.
Ich glaube nicht, dass es eine richtige Antwort dafür gibt. Ich persönlich benutze Opengl für alles, zum Beispiel in Menüstrukturen verwende ich Texturen für den Text. Ich denke, es kommt darauf an, was du anzeigen willst. Ich denke, es wäre einfacher, ein individuelles Aussehen zu schaffen, das gut zu deinem Spiel passt, wenn du bei opengl bleibst.
Ja ich denke, ich werde diesen Ansatz nehmen, aber ich wusste nur nicht, ob es besser war, Äpfel zu lassen, die die Grundlagen behandeln. – chicken
Ich habe widersprüchliche Dinge darüber gehört. Ich habe gehört, es ist langsam, wenn Sie UIKit über die OES rendern.
Ich sage, wenn Sie eine andere App sehen, die es macht, die in Ordnung ist, folgen Sie der Klage.
Einige der beliebtesten Spiele machen alles in OES - z.B. Rolando. Vielleicht ist es am besten, diesem Muster zu folgen.
Ich glaube nicht, dass er fragt, ob man UIKit über OpenGLES-Ansichten schichten soll, sondern ob man es für andere "Modi" des Spiels verwenden soll. – U62
Ja, wie U62 sagte, im Grunde hätte ich in diesem Beispiel eine Reihe von View-Controllern und Pushing/Poping-Ansichten auf der Grundlage der richtigen zu zeigen. – chicken
Zusätzlich zu dem, was andere gesagt haben, bedenken Sie, dass es etwas einfacher ist, bei OpenGL zu bleiben, da dies der Hauptteil Ihrer Codebasis sein wird.
Danke, ich denke, ich werde nur die ES-Route gehen, um all dies zu tun. – chicken
Aber was machst du mit dem Text? ... Ich kann meine Buttons und Interfaces in openGL machen, aber wie gehst du mit dem Text um? ... Wenn mein ganzes Spiel zum Beispiel in Englisch ist schreibe ich es nur über meine Grafik-Assets, aber was ist, wenn ich es lokalisieren muss? scheint ein wenig kompliziert –
Normalerweise in einem Spiel haben Sie zwei Situationen: eine kleine Menge Text und eine große Menge. Wenn es sich um eine kleine Menge handelt, würden Sie den Text wahrscheinlich in eine Bitmap brennen und im Fall der Lokalisierung mehrere Kopien der Bitmap haben. Wenn Sie große Mengen an Text haben, ist es nicht praktisch, sie in einer Bitmap zu speichern. Sie müssen den Text zur Laufzeit rendern. Sie können einen Grafikkontext in einer Offscreen-Bitmap erstellen, mithilfe von Quartz-APIs alles (einschließlich Text) wiedergeben und diese Bitmap dann als OpenGL-Textur verwenden. – U62