2016-04-06 61 views
0

我使用在OpenGL中的透視投影攝像機沿的gluLookAt()OpenGL的屏幕空間平移

線眼目標向上方法我想整個3D視圖移動到不同的2D窗口中的位置,如圖所示下面的圖片:

enter image description here

我知道這可以用glViewport()做,但我最終希望能夠除了3D視圖旋轉到翻譯它,我的理解不會使用glViewport方法。

我也明白,採取非glViewport方法將需要額外的模板印刷步驟。我稍後會離開這一步。

現在,我希望簡單地翻譯三維視圖,如上圖所示(忽略了模版印刷問題)。

翻譯投影矩陣似乎是正確的方法,但翻譯範圍並不是我所期望的。也許我需要縮放我使用的參數?無論如何,我希望有人能夠解釋如何(或多或少)模擬一個可翻譯的/可旋轉的glViewport用於3D透視圖。

謝謝!

+0

這聽起來像'glViewport()'是你想要的。我不知道旋轉是如何連接到'glViewport()'的,我不明白你爲什麼認爲它不起作用。 –

+0

渲染到圖像,並將_that_渲染到屏幕,應用適當的變換矩陣。請參閱http://stackoverflow.com/questions/577639/rotating-a-glviewport –

+0

我試圖在2D GUI小部件內繪製3D透視圖。在圖中,我展示了正在翻譯的2D小部件(在屏幕空間中)。 3D視圖應該與2D小部件一起轉換。如果2D小部件在z軸上旋轉90def,則3D視圖也應該旋轉。你將如何做到這一點glViewport() – pt3dNyc

回答

0

您使用glViewport()。對於每個視口,您可以設置視口,設置模型視圖矩陣和繪製場景。

對於第一視窗

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

//do something with projection matrix 

drawScene(); 

對於第二視窗

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

//do something different with projection matrix 

drawScene(); 
+0

此方法是否允許按照問題註釋中所述旋轉視口? – pt3dNyc

+0

視口將不會旋轉。渲染到此視口的內容(場景)將旋轉。 –