Re: [問題] OpenGL glFrustum() 設定的問題
看板C_and_CPP (C/C++)作者VictorTom (鬼翼&娃娃魚)時間16年前 (2010/05/13 13:09)推噓0(0推 0噓 14→)留言14則, 1人參與討論串2/3 (看更多)
※ 引述《hoson (林老師賣的冰淇淋)》之銘言:
: 各位先進大家好 想請問openGL glFrustum 設定的問題
: 1.
: glMatrixMode (GL_PROJECTION);
: glFrustum(-320.0 , 320.0 , -240.0 , 240.0 , 659 , 1000);
: glMatrixMode (GL_MODELVIEW);
: glLoadIdentity()
: glTranslatef (0, 0, -670);
: glColor3f (1.0, 0.5, 0.1);
: glutSolidTeapot (50);
: 這時候茶壺畫出來很正常 也在螢幕的正中間
: 2. 但是
: glMatrixMode (GL_PROJECTION);
: glFrustum(0.0 , 640.0 , 0.0 , 480.0 , 659 , 1000); //這裡跟改座標
: glMatrixMode (GL_MODELVIEW);
: glLoadIdentity()
: glTranslatef (320, 240, -670); //想要在螢幕中心顯示
: glColor3f (1.0, 0.5, 0.1);
: glutSolidTeapot (50);
: 雖然的確在螢幕正中心畫出茶壺 可是茶壺卻有點變型
: 有點像是 視角改變所產生的perspective的變形
: 想請問在 glFrustum(0.0 , 640.0 , 0.0 , 480.0 , 659 , 1000);的設定下
: 要怎麼去決定 3D物體的座標 才能正確顯示3D圖
: 謝謝~
glFrustum()的功能, 是決定你的View Volumn範圍用的....
當然, 其實也就是你的3D scene裡投影到View Plane的方式....
你原本的View Volumn設定是-320 ~ +320, 用簡單圖解X-Z平面:
\ /
\ /
\ /
\ /
\ /
\ / --> X
eye
當你改成0 ~ 640的設定之後, 你的View Volumn與投影方式是這樣:
| /
| /
| /
| /
| /
| / --> X
eye
因此會有類似perspective投影的扭曲歪斜發生是自然的....
所以問題在你幹麻要用這樣子歪斜的投影方式來呈現scene呢??
純粹只是改參數練習玩玩看??還是是否有什麼特定想法要實作?_?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.134.41.4
※ 編輯: VictorTom 來自: 220.134.41.4 (05/13 13:19)
→
05/13 13:33, , 1F
05/13 13:33, 1F
→
05/13 13:34, , 2F
05/13 13:34, 2F
→
05/13 13:34, , 3F
05/13 13:34, 3F
→
05/13 13:35, , 4F
05/13 13:35, 4F
→
05/13 13:35, , 5F
05/13 13:35, 5F
→
05/13 13:36, , 6F
05/13 13:36, 6F
→
05/13 13:36, , 7F
05/13 13:36, 7F
→
05/13 13:37, , 8F
05/13 13:37, 8F
→
05/13 13:37, , 9F
05/13 13:37, 9F
→
05/13 13:38, , 10F
05/13 13:38, 10F
→
05/13 13:38, , 11F
05/13 13:38, 11F
→
05/13 13:39, , 12F
05/13 13:39, 12F
→
05/13 13:39, , 13F
05/13 13:39, 13F
→
05/13 13:40, , 14F
05/13 13:40, 14F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章