2011-04-06 70 views
0

夥計們,這怎麼可能。但在我以前的項目中,事實並非如此。我不知道我是如何嘗試這種效果的。請告訴我實情。OpenGL:照相機之後的光源?

+0

對不起,我不知道你的問題是什麼,或者你在問什麼。請嘗試更詳細地描述您的問題(代碼示例,圖表,某物) – Mat 2011-04-06 19:01:15

回答

4

Section 18.050, How can I make my light move or not move and control the light position?

首先,你必須瞭解 光位置由 OpenGL的轉化。

光位置由 轉化時 與呼叫 到glLightfv(GL_LIGHTn, GL_POSITION, ...)指定光源位置 模型視圖矩陣堆棧的當前頂部的內容。 如果您稍後更改ModelView 矩陣,例如當視圖爲下一幀更改 時,不會自動重新轉換光源位置 MatrixView 矩陣的新內容。如果您想更新 燈的位置,則必須再次 用呼叫 至glLightfv(GL_LIGHTn, GL_POSITION, ...)指定燈位置。

...

  • 我怎樣才能讓我的光位置保持相對於我的眼睛 位置固定的嗎?我如何製造大燈?

你需要指定你的眼睛 座標空間。爲此,請將 ModelView矩陣設置爲標識,然後 指定您的光源位置。爲了使 前照燈(這似乎是 位於或在眼睛附近, 沿着視線閃耀光),設置 模型視圖到身份,設定在 光位置(或附近) 原點,並將方向設置爲 負Z軸。

當燈的位置相對於眼睛固定爲 時,您不需要 爲每個 幀重新指定燈位置。通常,當您的程序初始化時,您可以指定一次 。

+1

嗯,FAQ的代碼示例不正確。沒有任何OpenGL所接受的令牌「GL_LIGHT_POSITION」。通過調用'glLightfv(GL_LIGHT ,GL_POSITION,...);',其中''代表光數量來設置燈光。此答案已被編輯以顯示正確的語法。 – radical7 2013-03-25 05:03:29

+0

@ radical7:很好。編輯。 – genpfault 2013-03-25 13:13:22