glLightfv 函式

glLightfv函式會傳回光源參數值。

語法

void WINAPI glLightfv(
         GLenum  light,
         GLenum  pname,
   const GLfloat *params
);

參數

light

光線的識別碼。 可能的光線數目取決於實作,但至少支援八個光線。 它們會以格式GL_LIGHT i 的符號名稱來識別,其中 i 是值:0 到 GL_MAX_LIGHTS - 1。

pname

光線的光源參數。 接受下列符號名稱。

意義
GL_AMBIENT
params參數包含四個浮點值,可指定光線的環境 RGBA 強度。 浮點值會直接對應。 整數和浮點值都不會受到限制。 預設的環境光線強度 (0.0、0.0、0.0、1.0) 。
GL_DIFFUSE
params參數包含四個浮點值,指定光線的擴散 RGBA 強度。 浮點值會直接對應。 整數和浮點值都不會受到限制。 預設擴散強度為 (0.0、0.0、0.0、1.0) 以外的所有光線。 光線零的預設擴散強度為 (1.0、1.0、1.0、1.0) 。
GL_SPECULAR
params參數包含四個浮點值,指定光線的反射 RGBA 強度。 浮點值會直接對應。 整數和浮點值都不會受到限制。 預設反射強度為 (0.0、0.0、0.0、1.0) ,適用于非淺色零的所有光線。 光線零的預設反射強度 (1.0、1.0、1.0、1.0) 。
GL_POSITION
params參數包含四個浮點值,可指定光線在同質物件座標中的位置。 整數和浮點值都會直接對應。 整數和浮點值都不會受到限制。
當呼叫 glLightfv 時,模型檢視矩陣會轉換位置 (就像是點) ,而且會儲存在眼睛座標中。 如果位置的 w 元件為 0.0,則會將光線視為方向來源。 擴散和反射光源計算會採用光線的方向,但不會將其實際位置納入考慮,並停用衰減。 否則,擴散和反射光源計算是根據眼睛座標中光線的實際位置,並啟用衰減。 預設位置為 (0,0,1,0) ;因此,預設光源是方向、平行到 -z 軸的方向和 。
GL_SPOT_DIRECTION
params參數包含三個浮點值,指定同質物件座標中光線的方向。 整數和浮點值都會直接對應。 整數和浮點值都不會受到限制。
當 glLightfv被呼叫 (就像是一般) ,而且儲存在眼睛座標中時,點方向會由 modelview 矩陣的反轉來轉換。 只有在GL_SPOT_CUTOFF不是 180 時,預設才會有顯著性。 預設方向為 (0,0,1) 。
GL_SPOT_EXPONENT
params參數是單一浮點值,指定光線的濃度分佈。 整數和浮點值會直接對應。 只接受範圍 [0, 128] 中的值。
有效的光線強度會受到光線方向與光線方向之間角度的余弦值衰減,從光線到頂點被光源的方向,提升至現成指數的乘冪。 因此,不論現成截斷角度為何,較高的現成指數都會產生更專注的光源。 預設的現成指數為 0,導致統一光線分佈。
GL_SPOT_CUTOFF
params參數是單一浮點值,指定光源的最大散佈角度。 整數和浮點值會直接對應。 只接受範圍 [0, 90] 和特殊值 180 中的值。
如果光線方向與從光線到點點方向之間的角度大於特別剪下角度,則光線會完全遮罩。 否則,其強度是由現成指數和衰減因數所控制。 預設的現成截斷為 180,導致統一光線分佈。
GL_CONSTANT_ATTENUATION、GL_LINEAR_ATTENUATION、GL_QUADRATIC_ATTENUATION
params參數是單一浮點值,指定三個光線衰減因數之一。 整數和浮點值會直接對應。 只接受非負值。
如果光線是位置,而不是方向,其強度會由總和的倒數衰減:常數因數、線性因數乘以光線與點之間的距離,而二次方因數乘以相同距離的平方。 預設衰減因數 (1,0,0) ,因此不會造成衰減。

params

指定將設定光源光源參數 pname的值。

傳回值

此函式不會傳回值。

錯誤碼

glGetError函式可以擷取下列錯誤碼。

Name 意義
GL_INVALID_ENUM
lightpname 不是可接受的值。
GL_INVALID_VALUE
指定的現成指數值超出範圍 [0, 128] 或現成截斷值超出範圍 [0, 90] (,但指定特殊值 180) ,或指定負衰減因數。
GL_INVALID_OPERATION
函式是在 對 glBegin 的呼叫和 glEnd的對應呼叫之間呼叫。

備註

glLightfv函式會設定個別光源參數的值或值。 light參數會命名光線,而且是格式為 GL_LIGHT i的符號名稱,其中 0 = i< GL_MAX_LIGHTS。

pname參數會以符號名稱再次指定其中一個光源參數。 params參數是單一值或包含新值的陣列指標。

使用 glEnableglDisable 搭配引數GL_LIGHTING啟用和停用光源計算。 啟用光源時,啟用的光源會參與光源計算。 使用glEnableglDisable搭配引數 GL_LIGHT i來啟用和停用光源i

GL_LIGHT i = GL_LIGHT0 + i一律是這種情況。

下列函式會擷取 與 glLightfv 函式相關的資訊:

glGetLight

glIsEnabled with argument GL_LIGHTING

規格需求

需求
最低支援的用戶端
Windows 2000 Professional [僅限傳統型應用程式]
最低支援的伺服器
Windows 2000 Server [僅限桌面應用程式]
標頭
Gl.h
程式庫
Opengl32.lib
DLL
Opengl32.dll

另請參閱

glBegin

glColorMaterial

glEnd

glLightModel

glMaterial