2011-06-04 110 views
0

我得到了大部分的照明工作,我想要的方式,但我似乎完全缺少任何環境照明。也就是說,事物的遠離太陽的一面是完全黑色的(我希望有50%的環境),而朝向太陽的一面看起來像我所期望的那樣。爲什麼我的開放式環境照明不起作用?

這是我的燈光設置代碼(由原來的編輯,見下面的註釋):

- (void) setupLighting 
{ 
    const float amb = 2.0; 
    const float LightAmbient[][4] = { { amb, amb, amb, 1.0f }, 
             { amb, amb, amb, 1.0f } 
            }; 
    const float LightDiffuse[] [4] = { { 1.0f, 1.0f, 1.0f, 1.0f }, 
             { 1.0f, 1.0f, 1.0f, 1.0f } 
            }; 
    const float LightPosition[][4] = { { 1.0f, 4.0f, 2.0f, 0.0f }, 
             { 0.0f, 10.0f, 0.0f, 1.0f } 
            }; 

    glLightfv(GL_LIGHT0, GL_AMBIENT, LightAmbient[0]); 
    glLightfv(GL_LIGHT0, GL_DIFFUSE, LightDiffuse[0]); 
    glLightfv(GL_LIGHT0, GL_POSITION, LightPosition[0]); 

    glLightfv(GL_LIGHT1, GL_AMBIENT, LightAmbient[1]); 
    // etc., snip -- no LIGHT1 for this round 

    glColorMaterial (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE); 
    glEnable(GL_COLOR); 
    //glEnable(GL_COLOR_MATERIAL); 

    glEnable(GL_LIGHT0); 
    //glEnable(GL_LIGHT1); 
    glEnable(GL_LIGHTING); 
} 

(注:光線1註釋掉現在 - 我只是試圖讓LIGHT0做我想做的。 )

不知道它是否重要,但我正在使用glDrawArrays()繪製單位對齊的紋理映射單位立方體(一個MineCraft)。我所有的法線似乎都是正確的。如果我離開照明關閉,所有東西都可以正確繪製(只是平坦的。)

任何提示?

謝謝!

編輯(新增截圖)

Here's a screenshot of the problem

編輯每評論,我撞到的環境值高達2.0,現在它看起來像什麼會期望爲約50%的環境我。這看起來很糟糕 - 我認爲照明值被固定在[0,1] ...?關於環境光的基本概念是不是在追求什麼?

+0

您是否嘗試增加環境光並查看它是否會影響結果?如果是這樣 - 光線正在工作 – Andrew 2011-06-04 17:59:03

+0

也許我沒有得到它,但它們並非完全黑色。他們是黑暗的,但肯定不是黑人。 – Bart 2011-06-04 18:14:27

回答

2

在您的代碼中,您沒有啓用GL_COLOR_MATERIAL。所以如果你沒有設置環境材質的顏色(通過調用glMaterialGL_AMBIENT),它的默認值是(0.2,0.2,0.2),當乘以(1,1,1)(燈的環境溫度)時,這會導致你的屏幕截圖。

此外,無需使用大於1的顏色值,因爲無論如何這些值都被固定爲[0,1]。

+0

全球環境價值乘以一切就是我失蹤的那一點。謝謝! – Olie 2011-06-06 14:10:20