2014-04-29 218 views
0

我想渲染場景中的一對點燈,但無法獲得實際燈光照亮。我開始工作的唯一的光線是平行光最初點亮的情景:Point Light not rendering

Directional Light with no Point Light rendering

其中顯示了兩塊石頭是因爲這兩個點光源相同的位置。我玩弄了漫反射,顏色和衰減值,但得到了相同的結果。但是,無論是改變光的氛圍時,顏色改變:

Directional Light with Ambient Intensity

我的內GLSL的計算是正確的,我的制服是正確讀取爲好。但不知何故,我失去了我的瀰漫強度。 m_pointLight[0].DiffuseIntensity未註冊更改,但如果使用註釋AmbientIntensity,則場景呈紅色。

m_scale += 0.0057f; 

// changing the value makes scene red 
m_pointLight[0].AmbientIntensity = 0.5f; 
// changing the value does nothing 
m_pointLight[0].DiffuseIntensity = 1.5f; 
// light color is red 
m_pointLight[0].Color = glm::vec3(1.0f, 0.0f, 0.0f); 
// position of light (same as rock) 
m_pointLight[0].Position = glm::vec3(3.0f, 1.0f, FieldDepth * (cosf(m_scale) + 1.0f)/2.0f); 
// Light decay 
m_pointLight[0].Attenuation.Linear = 0.01f; 

回答

0

不是一個真正的答案但我想通了,我的問題是哪一部分:

問題是我是從看的角度。我的代碼有些錯誤。我把我的相機位置原來設置爲(0,100,75)。在將一小塊代碼移動到我設置我的視角和其他制服的位置之後,點光源開始顯示出一些光線。問題在於當兩塊岩石移動,靠近地板中心時,第一塊岩石的點光開始發紅。第二塊岩石也是如此,但它被設置爲藍色。但隨着岩石靠近相機,顏色逐漸消失,直到它出現。然後,當它移回到中心時,顏色逐漸變得更亮。

那麼我認爲這可能與我所處的角度有關。因此,從相機位置(0,100,75),我決定從(-75爲z軸)的完整相反端看。這是我得到:

enter image description here

唯一剩下的問題是,根據相機在哪裏,點光源最接近相機不顯示(比最接近的下側等巖)。右下圖像是正確顯示所有的燈只有一個:

enter image description here

如果一些能解釋這是怎麼回事,這將不勝感激。

+0

也許你沒有正確設置光線的位置 –

+0

@ratchetfreak我硬編碼的燈光位置,並添加了一個實際的相機,所以我可以看到實時發生的事情。當我像在圖片中一樣移動時,我得到了相同的結果。紅色和藍色留在相機視圖的左側和右側,而不是停留在原地。 – SpicyWeenie

+0

然後你設置光*相機空間*而不是*對象空間* –