2012-07-26 96 views
1

我試圖安裝照明在我的場景 但由於某種原因它不工作,我試圖找出爲什麼OpenGL光照不工作

這裏就是我的OpenGL初始化:

glClearColor(0.0, 0.0, 0.0, 0.0); 
glClearDepth(1.0); 
glDepthFunc(GL_LESS); 
glEnable(GL_DEPTH_TEST); 
glShadeModel(GL_SMOOTH); 
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); 
glEnable(GL_COLOR_MATERIAL); 
glEnable(GL_LIGHTING); 
glEnable(GL_NORMALIZE); 
glEnable(GL_LIGHT0); 

,這裏是我如何努力與照明借鑑:

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 
glLoadIdentity(); 
GLfloat diffuse0[]={1.0, 1.0, 1.0, 1.0}; 
GLfloat ambient0[]={1.0, 1.0, 1.0, 1.0}; 
GLfloat specular0[]={1.0, 1.0, 1.0, 1.0}; 
GLfloat light0_pos[]={1.0, 1.0, 1,0, 1.0}; 

glLightfv(GL_LIGHT0, GL_POSITION, light0_pos); 
glLightfv(GL_LIGHT0, GL_AMBIENT, ambient0); 
glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse0); 
glLightfv(GL_LIGHT0, GL_SPECULAR, specular0); 

glLightf(GL_LIGHT0, GL_CONSTANT_ATTENUATION, 2.0); 
glLightf(GL_LIGHT0, GL_LINEAR_ATTENUATION, 1.0); 
glLightf(GL_LIGHT0, GL_QUADRATIC_ATTENUATION, 2.0); 

object->draw(); 

對象完全不

受照明

所有法線設置和opengl所需的所有照明場景所需的信息

有沒有......我錯過了什麼?編輯: 行!我終於找到了解決問題的辦法。 我的OpenGL的初始化函數代碼 我有顯示窗口,而不是 之前之後調用它是沒有道理的,這就是問題的根源...

回答

1

也許你應該告訴我們的對象的位置。

  • 可疑1:對象的位置和光太遠
  • 可疑2:隱藏所有衰減設置或使LINEARATTENUATION 0.0
+0

對象是在(0.0,-15.0, -20.0)我也檢查了當對象處於(0.0,0.0,-6.0)時會發生什麼,但我得到了關於第二個建議的相同結果 ..我試圖按照你所說的去做,但它仍然不起作用 – Smeky 2012-07-26 13:11:56