2016-04-06 6 views
0

Ich verwende eine perspektivische Projektion Kamera in OpenGL mit einem Auge-Ziel-up-Ansatz entlang der Linien von gluLookAt()OpenGL Bildschirmraum Übersetzung der Perspektive Kameraansicht

Ich möchte die gesamte 3D-Ansicht zu einem anderen bewegen Lage im 2d-Fenster, wie im Bild unten dargestellt:

enter image description here

ich weiß, das mit glViewport() getan werden kann, aber ich würde letztlich zu können, wie die 3D-Ansicht zusätzlich zu drehen, es zu übersetzen, was ich verstehe, wird nicht mit einem glViewport Ansatz arbeiten.

Ich verstehe auch, dass die Verwendung eines nicht-glViewport-Ansatzes den zusätzlichen Schritt des Schablonierens erfordert. Ich werde diesen Schritt für später verlassen.

Für jetzt hoffe ich, einfach die 3D-Ansicht zu übersetzen, wie im Bild oben gezeigt (das Schablonierungsproblem ignorierend).

Es scheint, als wäre die Übersetzung der Projektionsmatrix der richtige Ansatz, allerdings ist das Übersetzungsausmaß nicht das, was ich erwarte. Vielleicht muss ich den Parameter skalieren, den ich verwende? Auf jeden Fall hoffe ich, dass jemand erklären kann, wie man einen übersetzbaren/drehbaren glViewport für eine 3D-Perspektivansicht (mehr oder weniger) simuliert.

Danke!

+0

Es klingt wie 'glViewport()' ist das, was Sie wollen. Ich weiß nicht, wie Rotation mit 'glViewport()' verbunden ist, und ich verstehe nicht, warum Sie denken, dass es nicht funktioniert. –

+0

Rendern Sie ein Bild und rendern Sie _that_ auf dem Bildschirm, indem Sie die entsprechende Transformationsmatrix anwenden. Siehe http://stackoverflow.com/questions/577639/rotating-a-glviewport –

+0

Ich versuche, eine 3D-Perspektive in einem 2D-GUI-Widget zu zeichnen. Im Diagramm zeige ich das 2D-Widget, das übersetzt wird (im Bildschirmbereich). Die 3D-Ansicht sollte zusammen mit dem 2D-Widget übertragen werden. Wenn das 2D-Widget um z. B. 90 DEF in der Z-Achse gedreht wurde, sollte auch die 3D-Ansicht gedreht werden. Wie würden Sie dies mit glViewport() – pt3dNyc

Antwort

0

Sie verwenden glViewport(). Für jeden Ansichtsport legen Sie das Ansichtsfenster, die Modellansichtsmatrix und die Szenenszene fest.

Für erste Ansichtsfenster

glViewport (0, 0, window_width/2, window_height/2); 
glMatrixMode (GL_PROJECTION); 
glLoadIdentity(); 

//do something with projection matrix 

drawScene(); 

Für zweite Darstellungs

glViewport (window_width/2, 0, window_width/2, window_height/2); 
glMatrixMode (GL_PROJECTION); 
glLoadIdentity(); 

//do something different with projection matrix 

drawScene(); 
+0

Ermöglicht dieser Ansatz die Drehung des Ansichtsfensters wie in den Fragekommentaren beschrieben? – pt3dNyc

+0

Ansichtsfenster wird nicht gedreht. Der Inhalt (die Szene), der in diesem Ansichtsfenster wiedergegeben wird, wird gedreht. –

Verwandte Themen