2012-10-27 69 views
1

我試圖找出如何使用照明引擎在OpenGL。 我的目標是在相機的方向上模擬割炬。OpenGL光照

gluLookAt( x, y, z, 
     x+lx, y+ly, z+lz, 
     0.0f, 1.0f, 0.0f); 
GLfloat light_position[] = { x+1, y, z+1, 0.0f }; 
GLfloat light_direction[] = { x+lx,y+ly,z+lz}; 
GLfloat light_angle[] ={20}; 
glLightfv(GL_LIGHT0, GL_POSITION, light_position); 
glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION,light_direction); 
glLightfv(GL_LIGHT0,GL_SPOT_CUTOFF,light_angle); 

但是,當我執行它,僅示出了環境光的量小,沒有像梁的方向上。 我在做什麼錯?

+0

是否啓用'GL_LIGHTING'和'GL_LIGHT0'用'glEnable'? –

+0

是,現在我試圖GLfloat light_position [] = {X + 1,Y,Z + 1,100.0f} ;,現在有從z的-infinte一個光 - 軸... eventhough lightposition是的位置相機 –

+0

嗯。那麼我會猜測你的'light_direction'向量是問題。如果它真的只是一個方向_vector_,它應該是'{lx,ly,lz}'(注意'gluLookAt'將_point_作爲第二個參數,這就是爲什麼你需要添加點座標)。如果這還不能解決這個問題,但是,我不知所措...... –

回答

5

OpenGL的燈不畫 「梁」,他們只affect how geometry is lit

可見「光」(就像你看到的,當你在稠密的空氣像霧或雲光較強的定向光)通常被稱爲「光桿」。這是你想看到的那種效果嗎?

http://developer.amd.com/media/gpu_assets/Mitchell_LightShafts.pdf


還記得,舊的OpenGL 1光照模型是每頂點。如果你指揮你的光在一個平面上,那麼無論..

  • 細分表面有足夠的頂點光形狀可見很好,
  • 在着色器實現個別像素着色技術。