作者hoson (林老師賣的冰淇淋)
看板C_and_CPP
標題Re: [問題] OpenGL glFrustum() 設定的問題
時間Thu May 13 13:20:37 2010
:
glFrustum()的功能, 是決定你的View Volumn範圍用的....
: 當然, 其實也就是你的3D scene裡投影到View Plane的方式....
: 你原本的View Volumn設定是-320 ~ +320, 用簡單圖解X-Z平面:
: \ /
: \ /
: \ /
: \ /
: \ /
: \ / --> X
: eye
: 當你改成0 ~ 640的設定之後, 你的View Volumn與投影方式是這樣:
: | /
: | /
: | /
: | /
: | /
: | / --> X
: eye
: 所以問題在你幹麻要用這樣子歪斜的投影方式來呈現scene呢??
: 純粹只是改參數練習玩玩看??還是是否有什麼特定想法要實作?_?
原來是這樣啊!!!!
我原本以為
glFrustum 可以跟 gluOrtho2D 一樣 可以建立座標系的單位
所以我原本想的是
\ /
\ /
\ /
\ /
\ /
\ / --> X 的範圍(0 ~ 640 )
Y 的範圍(0 ~ 480 )
有辦法這樣設定嗎??
另外, frustum設定的XY 應該是指near plane上面的座標吧?
感謝!!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.151.68
推 VictorTom:印象中是當作near plane上的l r b t沒錯.... 05/13 13:23
→ VictorTom:0~?的要求, Projection matrix加一個translate不行嗎?? 05/13 13:24
→ VictorTom:看起來你是不想改變原本是0~?的vertex data也不想在VS 05/13 13:25
→ VictorTom:運算裡每個vertex都掛一次translate吧?? 不過基本上這 05/13 13:26
→ hoson:V大指的意思是...? 再畫圖形前 先做對應的平移嗎? 05/13 13:26
→ VictorTom:個translate掛在ModelView計算也一樣, 除非你的MV 05/13 13:26
→ VictorTom:matrix頻繁的改變, 而Project Matrix只會改變一次.... 05/13 13:26
推 VictorTom:對啊, 就像第二個茶壺一樣, 先translate 320,240啊.... 05/13 13:29
→ hoson:再次感謝v大 不過其實我一直搞不懂GL裡面座標的關係 05/13 13:38
→ hoson:如果先用 glOrtho,對於3d座標的關係就很清楚 05/13 13:39
→ hoson:可是 glFrustum 是四角錐的空間 就不知道他3d的座標的位置.. 05/13 13:40
→ VictorTom:關於這點, 小弟剛補修比較完整的觀念在前篇回文推文處, 05/13 13:42
→ VictorTom:也許您可以參考看看; GL裡的座標只是抽象的數值座標概念 05/13 13:42
→ VictorTom:Modelview/Project matrix整套transformation在GL裡有它 05/13 13:43
→ VictorTom:的意義與道理在, 但是化為計算, 就只是一堆matrix 05/13 13:43
→ VictorTom:production, 就跟中學學平面座標轉幾度要怎麼乘matrix 05/13 13:44
→ VictorTom:道理其實基本上是一樣的:) 05/13 13:45
→ hoson:感謝v大!!! 05/13 13:46