2014-06-26 38 views
-1

我在Python中使用OpenGL,但照明無法正常工作。有一個點燈:OpenGL中的點光源範圍

glLightfv(GL_LIGHT1, GL_POSITION, (-26.5, -17.0, 17.0, 1.0)) 
glLightfv(GL_LIGHT1, GL_SPOT_DIRECTION, 0.0) 
glLightfv(GL_LIGHT1, GL_SPOT_CUTOFF, 180.0) 
glLightfv(GL_LIGHT1, GL_SPOT_EXPONENT, 50.0) 
glLightfv(GL_LIGHT1, GL_CONSTANT_ATTENUATION, 50.0) 

我只看到環境照明的顏色。這可能是因爲我沒有設置光線的範圍,但我該怎麼做?

回答

1

挖回傳統的OpenGL文檔後,大部分的參數看起來樣的犯罪嫌疑人:

  • GL_SPOT_DIRECTION是一個載體。您傳遞一個浮點值,但需要傳遞一個帶有3個浮點值的向量。這是光源指向的方向。
  • GL_SPOT_CUTOFF應該在0.0到90.0之間。您正在使用的值180.0將禁用焦點。嘗試類似45.0的東西。
  • GL_CONSTANT_ATTENUATION分光強度爲給定值。由於您指定了50.0,因此您的光強度只有全部值的2%,這會使效果接近不明顯。嘗試一個更小的值,例如將它保持在1.0。

查看免費在線版紅皮書中的照明章節以獲取圖表和更詳細的參數說明:http://www.glprogramming.com/red/chapter05.html#name4

+0

感謝您的回答,現在燈光正常工作。最後一個問題:如果我使用glLightfv(GL_LIGHT0,GL_POSITION,(0.0,0.0,0.0))製作位置燈,我會看到白光。我怎樣才能讓這種淡藍色?你給的鏈接非常好,但沒有說任何關於這個的。 –

+0

光源具有'G_AMBIENT','GL_DIFFUSE'和'GL_SPECULAR'參數,允許您設置淺色。例如,'glLightfv(GL_LIGHT0,GL_DIFFUSE,(0.0,0.0,1.0,1.0)'應該使光源的漫反射部分變爲藍色。 –

+0

您是對的,Reto Koradi。問題解決了:) –