2013-02-12 31 views
0

如何獲得opengl自己單元中的查看平面的相對尺寸?我需要找出「opengl單位」的寬度和高度。有沒有一個函數可以檢索這些信息?如何找出OpenGL中屏幕平面上有多少單元

我假設Z中的一個單位(讓我們說1.0f)相當於X中的一個單位,即使轉換爲真實的測量系統毫無意義。

我知道我可以通過使用GetSystemMetrics(SM_CXSCREEN)glutGet(GLUT_SCREEN_WIDTH)來獲得屏幕尺寸,但是這是以像素爲單位的。

要處理圖形窗口調用,我在非Windows操作系統上使用freeglut,在Windows上使用WinAPI。

+1

你究竟想在這裏做什麼 – Aesthete 2013-02-12 06:26:39

+0

這個問題是寫無效的。假設您使用透視投影,則不存在「查看平面」。屏幕的寬度取決於您測量的Z距離。如果你正在談論固定的已知距離(如-1.0 Z),那麼這是可以回答的。 – 2013-02-12 06:36:12

+0

我想說另一種說法,那就是我試圖找出我可以在屏幕平面中平行於X軸繪製的最大線,該線不超過視口的尺寸。 – user2063669 2013-02-12 06:36:32

回答

0

假設您想要繪製UI之類的東西,請將投影矩陣設置爲glOrtho的Orthographic矩陣,然後您沒有任何透視圖並且在世界座標和屏幕座標之間有直接的拼字對應映射。您的glOrtho調用的參數決定您的視口在世界座標中的寬度/高度。

如果要同時繪製UI和3D場景,請使用glOrtho繪製UI,然後使用剪貼蒙版使用glPerspective繪製場景,以確保不會破壞UI。


如果在另一方面,你想知道與視角3D場景的視口的寬度,讓你知道有多大繪製你的對象,那麼你就必須處理透視投影。你需要知道你想知道視圖端口的witdh /高度。您可以使用gluUnProject來計算與給定屏幕座標和Z平面相對應的世界座標。

但是反過來也許會更好,總是用給定的尺寸繪製對象,然後計算投影矩陣應該讓該對象在視口中正確顯示。