2011-09-20 27 views
5

我很難理解OpenGL透視圖。我已經閱讀了大量的信息,但它並沒有幫助我嘗試實現我所追求的目標。這是確保我的3D場景充滿每個Android設備上的整個屏幕。使用OpenGL ES進行任何分辨率的視口邊界

爲了測試這個,我將在3D空間中繪製一個四邊形,最終應該觸及每個角落,填滿整個設備的屏幕。然後,我可以使用這個四邊形,或者實際上它的座標來指定一個特定Z距離的邊界框,我可以使用它來放置幾何圖形並確保填充我的屏幕。當屏幕調整大小,或者我要在另一個屏幕分辨率上運行它時,我會重新計算此邊界框和幾何圖形。我不是在談論靜態幾何,而是比如說我想用球填滿屏幕,無論多大或多少球都沒有關係,唯一重要的是屏幕被填滿,沒有多餘的可見截錐體外的球。

enter image description here

  • 據我理解你指定綁定實際像素值的視錐的邊界視時。我知道你實際上可以用你的窗口像素匹配3D幾何位置的方式來設置正交視圖,但我不確定這是如何在透視視圖中工作的。
  • 這裏我假設視口寬度和高度被映射到nearZ。所以當一個球在Z = 1f的時候它的原始尺寸是
  • 當把球移動到屏幕的方向上,沿着farZ的方向時,球將被縮小以便透視圖起作用。所以例如Z = 51f的球會在我的屏幕上看起來更小,我需要更多的球來填滿整個屏幕。
  • 現在爲了做到這一點,我正在尋找紫色的邊界
  • 其實我需要這些邊界來填充整個屏幕上不同的平截頭體大小(寬x高),而平截頭球的角度和Z距離總是相同
  • 我想我可以用trig來計算這些紫色邊界(請參閱藍色三角形注)
  • 我是否正確標記了平截頭角,它是平截頭體的垂直角?
  • 有人可以詳細說明綠色1f和-1f值,因爲我似乎已經讀過關於它的一些信息嗎?看起來像一些用於調整視錐內幾何尺寸的標量?

我實際上希望能夠針對任何Android設備的任何分辨率/窗口,在3D空間內針對視口邊界編程位置幾何。

注意:我有一個閃光背景,它使用任意分辨率的已知寬度x高度的舞臺(可視區域),使用絕對測量或百分比測量可輕鬆定位/縮放資產。我想我正試圖弄清楚這個系統如何適用於OpenGL的透視圖。

回答