OpenGL之聚光燈

OpenGL之聚光燈

聚光燈:在定點光源的基礎加上光線輻射方向,因此光線呈圓錐.

聚光燈參數 範圍 簡介
GL_SPOT_DIRECTION (x,y,z) 聚光燈指向/方向3D矢量

默認值:(0,0,-1)

GL_SPOT_EXPONENT 0-128 焦點/指數:光線從焦點到圓錐的邊界,光的強度不斷衰減,直到邊界消失.

指數越大焦點越小

指數越小焦點越大

GL_SPOT_CUTOFF 0.1-90 圓錐面與指向軸的角度(圓錐角),所以聚光燈的張角為圓錐角的2倍.

張角=圓錐角*2

聚光燈函式使用示例

  1. float Spot_Direction[] = {0f,0.0f,-1,0.0f}; // 聚光燈的指向
  2. float Light_Ambient[] = {0f,1.0f,1.0f,1.0f};// 環境光
  3. float Light_Diffuse[] = {0f,1.0f,1.0f,1.0f};// 散射光
  4. float Light_Position[] = {0f,0.0f,1.0f,1.0f};// 光源位置
  5. glEnable(GL_LIGHTING); // 啟用光照
  6. glLightfv(light,GL_AMBIENT, Light_Ambient);// 環境光分量
  7. glLightfv(light,GL_DIFFUSE, Light_Diffuse);// 散射光分量
  8. glLightfv(light,GL_POSITION,Light_Position);// 光源位置
  9. glLightf(GL_LIGHT0, GL_SPOT_CUTOFF, 0f); // 設置聚光燈的角度
  10. glLightfv(GL_LIGHT0,GL_SPOT_DIRECTION, Spot_Direction); // 設置聚光燈的
  11. glLightf(GL_LIGHT0, GL_SPOT_EXPONENT, 0f); // 設置聚光燈的指數
  12. glEnable(GL_LIGHT0); // 啟用燈光

聚光燈程式示例,可分別設定張角與焦點.下載

  1. 按(/)鍵增加或減小聚光燈焦點指數
  2. 按[/]鍵增加或減小聚光燈張角
  3. 按+/-鍵增加或減小聚光燈亮度
  4. 按SPACE(空格)鍵啟用或禁用聚光燈
  5. 按UP/DOWN鍵正方體繞X軸旋轉
  6. 按LEFT/RIGHT鍵正方體繞Y軸旋轉
  7. 按F1鍵打開幫助
  8. 按ESC鍵重置聚光燈參數

 

評論