2011-04-29 73 views
7

當我使用它們中的每一個具有相同的參數時,我注意到的唯一區別是'攝影機'距離物體有多近。這裏有什麼區別,哪一個主要是2D遊戲的首選?OpenGL(ES) - 截錐體和正方體之間有什麼區別?

+0

http://stackoverflow.com/questions/2571402/explain-the-usage-of-glortho/36046924#36046924 – 2016-03-16 21:06:59

回答

30

我不同意LeffelMania,雖然他的答案已被接受,但我想再次解釋一下截錐體是什麼以及正投影和透視投影之間的區別是什麼。

圓錐臺是沒有頂部形狀的3D對象(在由zNear和zFar平面之間的空間定義的鏈接中)的金字塔。

view frustum

平截頭是用來確定哪些相機能夠看到。所有與相機視角內部或相交的視角都必須進行渲染,其餘部分都可以忽略。

由於平截頭體是進行相交檢查的困難形狀,因此經常會構造矩陣變換以便將視錐體轉換爲立方體。這個矩陣變換也適用於所有的場景對象,所以我們現在可以做一個簡單的「它與立方體相交」的檢查。這被稱爲canonical view frustumsee more info here

現在關於透視vs正交投影。在圖片中您可以看到相機或投影中心(COP)。在透視投影中,COP靠近近平面。遠飛機上所有位置的光線指向COP。在這些光線與近平面(aka視口)相交的地方,像素根據距光線最近的平面的顏色着色。透視投影導致(多個)消失點和遠離相機的物體更小,世界上的平行線不一定平行於圖像。

在正射投影中,COP距離無限遠,所以光線幾乎相互平行。沒有消失點,更遠處的物體不會縮小,世界上的平行線與圖像平行。

+0

顯然「一般而言」和「總體概括」沒有足夠好的我的答案。我們完全同意,你只是用了更多的詞語和圖片...... – LeffelMania 2011-04-29 22:15:34

+6

對不起,但「用於3D場景以適應透視投影」非常模糊,我只需要填寫更多細節。 「它說明了每個物體的距離...(和)視角」是一個奇怪的陳述,因爲視錐本身根本不知道這一點,並且不用於任何距離或角度計算。所有的視角是,一種方法來挑選一個場景。 – 2011-04-30 07:47:37

1

一般來說,Frustum用於3D場景以適應透視視圖投影。它考慮了每個物體距相機的距離以及視角,以確定物體在屏幕上的大小和位置。一個正射投影只需將每個對象從畫線上的物體和像素畫出一條直線,使其成爲一個平坦的場景。這是一個總體概括,關於這個主題還有很多要說的,但是對於2D遊戲,您將需要使用正交投影。

相關問題