Frage

Ich habe ein OpenGL ES-Spiel, das ich zusammen bin Hacking. Ein Teil davon beinhaltet bei einem großen „Karte-like“ Bereich sucht und dann Doppeltippen auf einem Teil zu „zoom in“ es. Wie würden Sie OpenGL ES nutzen diesen Effekt (vorausgesetzt, dass sie müssen sich auf verschiedene Teile der Karte vergrößern können) zur Verfügung zu stellen.

Ich habe von glScale und glOrtho gehört, aber ich bin unklar, wie sie tatsächlich arbeiten, da die ganze Welt openGL mir sehr neu ist.

War es hilfreich?

Lösung

Die 2-D Zoomen Sie könnte besser sein describe erreicht Core Animation verwenden. NSView (und sein NDA'd iPhone Pendant) bieten implizite Animation, wenn Sie ihren Rahmen ändern. Alles, was Sie in diesem Fall tun müssen, würde wäre der Rahmen des origin.x und origin.y und Size.width und Size.height auf solche Werte, um den Blick größer als der Bildschirm zu machen. Wenn Sie dies tun und wickelten ihn in den entsprechenden Anrufen eine Animation zu starten und begehen, dann würden Sie eine Zoom-Animation kostenlos. Core Animation verwendet OpenGL hinter den Kulissen für seine Animationen.

Wenn Sie jedoch das Gefühl, dass Sie dies in OpenGL zu tun haben, kann ich vorschlagen, ein wenig writeup ich tat http://www.sunsetlakesoftware.com/2008/08/05/lessons-molecules-opengl-es ? Ich bin der Autor von Molecules , ein freien 3-D molekularen Visualizer für das iPhone, und ich wusste, nichts über OpenGL ES, bevor ich begann das Projekt. 3 Wochen später, war es in dem App Store, da sie ins Leben gerufen.

OpenGL Anrufe sind ziemlich einfach, es ist die Mathematik um sie herum, die Sie Kopfschmerzen geben kann. Zoom auf Objekte ist eigentlich ziemlich einfach und kann entweder durch Bewegen der Kamera oder durch tatsächlich physisch Skalieren von Objekten durchgeführt werden. Für Moleküle, ging ich den Weg der das Objekt Skalieren des glScalef (x, y, z) Funktion, wobei x, y verwendet wird, und z die Skalierungsfaktoren sind Sie möchten Ihr Modell Objekt anzuwenden. Ich mache meine Skalierung inkrementell. Das heißt, ich habe nicht die Transformationsmatrix zu Beginn eines jeden gerenderten Frame zurückgesetzt (mit glLoadIdentity ()), aber es nur ein wenig skalieren basierend auf Benutzereingaben. Wenn der Benutzer um 5% ihre Finger auseinander bewegt, ich die Skala um 5% erhöhen.

Auch hier würde ich Core Animation für die 2-D vorschlagen Zoomen Sie beschreiben, aber es ist nicht allzu schwer, die gleichen Ergebnisse in OpenGL ES zu erreichen.

Andere Tipps

Hochachtungsvoll, ist die Antwort ein paar Tage dauern, die Grundlagen von OpenGL zu lernen, und es gibt viel bessere Plätze für die auf dem Netz als hier.

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