Re: [問題] OpenGL glFrustum() 設定的問題

看板C_and_CPP (C/C++)作者 (林老師賣的冰淇淋)時間16年前 (2010/05/13 13:20), 編輯推噓2(2016)
留言18則, 2人參與, 最新討論串3/3 (看更多)
: 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

05/13 13:23, , 1F
印象中是當作near plane上的l r b t沒錯....
05/13 13:23, 1F

05/13 13:24, , 2F
0~?的要求, Projection matrix加一個translate不行嗎??
05/13 13:24, 2F

05/13 13:25, , 3F
看起來你是不想改變原本是0~?的vertex data也不想在VS
05/13 13:25, 3F

05/13 13:26, , 4F
運算裡每個vertex都掛一次translate吧?? 不過基本上這
05/13 13:26, 4F

05/13 13:26, , 5F
V大指的意思是...? 再畫圖形前 先做對應的平移嗎?
05/13 13:26, 5F

05/13 13:26, , 6F
個translate掛在ModelView計算也一樣, 除非你的MV
05/13 13:26, 6F

05/13 13:26, , 7F
matrix頻繁的改變, 而Project Matrix只會改變一次....
05/13 13:26, 7F

05/13 13:29, , 8F
對啊, 就像第二個茶壺一樣, 先translate 320,240啊....
05/13 13:29, 8F

05/13 13:38, , 9F
再次感謝v大 不過其實我一直搞不懂GL裡面座標的關係
05/13 13:38, 9F

05/13 13:39, , 10F
如果先用 glOrtho,對於3d座標的關係就很清楚
05/13 13:39, 10F

05/13 13:40, , 11F
可是 glFrustum 是四角錐的空間 就不知道他3d的座標的位置..
05/13 13:40, 11F

05/13 13:42, , 12F
關於這點, 小弟剛補修比較完整的觀念在前篇回文推文處,
05/13 13:42, 12F

05/13 13:42, , 13F
也許您可以參考看看; GL裡的座標只是抽象的數值座標概念
05/13 13:42, 13F

05/13 13:43, , 14F
Modelview/Project matrix整套transformation在GL裡有它
05/13 13:43, 14F

05/13 13:43, , 15F
的意義與道理在, 但是化為計算, 就只是一堆matrix
05/13 13:43, 15F

05/13 13:44, , 16F
production, 就跟中學學平面座標轉幾度要怎麼乘matrix
05/13 13:44, 16F

05/13 13:45, , 17F
道理其實基本上是一樣的:)
05/13 13:45, 17F

05/13 13:46, , 18F
感謝v大!!!
05/13 13:46, 18F
文章代碼(AID): #1Bwumd5m (C_and_CPP)
文章代碼(AID): #1Bwumd5m (C_and_CPP)