GLLIGHT

Section: Misc. Reference Manual Pages (3G)
索引 xjman
 

名前

glLightf, glLighti, glLightfv, glLightiv - 光源のパラメータを設定する

 

書式

void glLightf( GLenum light,

                 GLenum pname,
                 GLfloat param )
void glLighti( GLenum light,

                 GLenum pname,
                 GLint param )

delim $$  

引き数

light
光源を指定する。 光源の数は実装によって異なるが、少なくとも 8 個の光源には対応している。 光源は GL_LIGHT$i$ の形式のシンボル名を使って識別する。 ここで 0 < $ i $ < GL_MAX_LIGHTS である。
pname
light に対し、ひとつの値を持つ光源パラメータを指定する。 GL_SPOT_EXPONENT, GL_SPOT_CUTOFF, GL_CONSTANT_ATTENUATION, GL_LINEAR_ATTENUATION, GL_QUADRATIC_ATTENUATION を指定できる。
param
光源 light のパラメータ pname に設定する値を指定する。
 

書式

void glLightfv( GLenum light,

                  GLenum pname,
                  const GLfloat *params )
void glLightiv( GLenum light,

                  GLenum pname,
                  const GLint *params )

 

引き数

light
光源を指定する。 光源の数は実装によって異なるが、少なくとも 8 個の光源には対応している。 光源は GL_LIGHT$i$ の形式のシンボル名を使って識別する。 ここで 0 < $ i $ < GL_MAX_LIGHTS である。
pname
light に対し、ひとつの値を持つ光源パラメータを指定する。 GL_AMBIENT, GL_DIFFUSE, GL_SPECULAR, GL_POSITION, GL_SPOT_CUTOFF, GL_SPOT_DIRECTION, GL_SPOT_EXPONENT, GL_CONSTANT_ATTENUATION, GL_LINEAR_ATTENUATION, GL_QUADRATIC_ATTENUATION を指定できる。
params
ひとつ以上の値を格納している領域を指すポインタを指定する。 これらの値は、光源 light のパラメータpname に設定される。
 

説明

glLight は、個々の光源のパラメータの値を設定する。 light を光源を示し、GL_LIGHT$i$の形を取るシンボル名である。 ここで 0 < $ i $ < GL_MAX_LIGHTS である。 pname は光源の10個のパラメータのいずれかを指定する。 これもシンボル名で指定する。 params はひとつの値か、あるいは新しい値を格納した配列を指す ポインタである。 光源計算を有効または無効にするには、GL_LIGHTING を引き数に して glEnable または glDisable を呼ぶこと。 初期状態では光源計算は無効になっている。 光源計算が有効になっていると、有効になっている光源が光源の計算に寄与する。 光源 $i$ を有効または無効にするには、GL_LIGHT$i$ を引き数に して glEnable または glDisable を呼ぶこと。 光源の10個のパラメータを次に示す:
GL_AMBIENT
params は4個の整数値または浮動小数点値を取る。 これらの値は、環境光の RGBA 値での強度を指定する。 整数値の場合は、表現可能な正の最大値が 1.0 になり、表現可能な負の 最小値が -1.0 となるように線形にマッピングされる。 浮動小数点値は直接マッピングされる。 整数値の場合も、浮動小数点値の場合も、値の範囲が調整されることはない。 初期状態では、環境光の強度は (0, 0, 0, 1) である。
GL_DIFFUSE
params は4個の整数値または浮動小数点値を取る。 これらの値は、光の拡散の RGBA 値での強度を指定する。 整数値の場合は、表現可能な正の最大値が 1.0 になり、表現可能な負の 最小値が -1.0 となるように線形にマッピングされる。 浮動小数点値は直接マッピングされる。 整数値の場合も、浮動小数点値の場合も、値の範囲が調整されることはない。 初期状態では、GL_LIGHT0 の強度は (1, 1, 1, 1) であり、 他の光源の強度は (0, 0, 0, 0) である。
GL_SPECULAR
params は4個の整数値または浮動小数点値を取る。 これらの値は、光の鏡面反射の RGBA 値での強度を指定する。 整数値の場合は、表現可能な正の最大値が 1.0 になり、表現可能な負の 最小値が -1.0 となるように線形にマッピングされる。 浮動小数点値は直接マッピングされる。 整数値の場合も、浮動小数点値の場合も、値の範囲が調整されることはない。 初期状態では、GL_LIGHT0 の強度は (1, 1, 1, 1) であり、 他の光源の強度は (0, 0, 0, 0) である。
GL_POSITION
params は4個の整数値または浮動小数点値を取る。 これらの値は、同次オブジェクト座標における光源の位置を指定する。 整数値の場合も、浮動小数点値の場合も、値は直接マッピングされる。 整数値の場合も、浮動小数点値の場合も、値の範囲が調整されることはない。
glLight が呼ばれると、光源の位置はモデルビュー行列に よって座標変換され(点と同様に変換される)、眼点座標に格納される。 位置の $w$ 成分が 0 の場合には、この光源は並行光源として扱われる。 拡散と鏡面反射の光源計算においては光源の方向が考慮されるが、実際の位置は 考慮されない。また減衰は無効である。 それ以外の場合には、拡散と鏡面反射の光源計算は光源の実際の位置(眼点座標)に 基づいて行われる。また減衰は有効である。 初期値は (0, 0, 1, 0) である。 したがって、初期状態では光源は並行光源であり、$-z$ 軸方向を向いており、 この軸と並行である。
GL_SPOT_DIRECTION
params は 3 つの整数値または浮動小数点値を取る。 これらの値は、同次オブジェクト座標における光源の向きを指定する。 整数値の場合も、浮動小数点値の場合も、値は直接マッピングされる。 整数値の場合も、浮動小数点値の場合も、値の範囲が調整されることはない。
glLight が呼ばれると、スポット方向はモデルビュー行列の逆行列 によって座標変換され(法線と同様に変換される)、眼点座標に格納される。 この値は GL_SPOT_CUTOFF が 180度でない場合に限って意味が ある(初期値は 180 度である)。 初期状態での方向は (0, 0, -1) である。
GL_SPOT_EXPONENT
params はひとつの整数値または浮動小数点値を取る。 この値は光源の強度分布を指定する。 整数値の場合も、浮動小数点値の場合も、値は直接マッピングされる。 指定できる値の範囲は [0,128] に限られる。
有効な光の強度は、光の向きおよび光源から照らされる頂点への向きがなす角度の コサインによって減衰し、スポット指数により累乗される。 したがって、スポット指数が大きいほど光源は集中する。 この際にはスポットの切捨て角は無関係である(次項の GL_SPOT_CUTOFF を参照)。 スポット指数の初期値は 0 である。 この場合は光の分布は一様となる。
GL_SPOT_CUTOFF
params はひとつの整数値または浮動小数点値を取る。 この値は光源が広がる最大角を指定する。 整数値の場合も、浮動小数点値の場合も、値は直接マッピングされる。 指定できる値の範囲は [0,90] および特別な値である 180 に限られる。 光の向きおよび光源から照らされる頂点への向きがなす角度が、この切捨て角 よりも大きい場合には、光は完全にさえぎられる。 それ以外の場合には、光の強度はスポット指数および減衰係数によって 制御される。 切捨て角の初期値は 180 度である。 この場合は光の分布は一様となる。
GL_CONSTANT_ATTENUATION
GL_LINEAR_ATTENUATION
GL_QUADRATIC_ATTENUATION
params はひとつの整数値または浮動小数点値を取る。 この値は光の 3 つの減数係数のうちのひとつを指定する。 整数値の場合も、浮動小数点値の場合も、値は直接マッピングされる。 指定できるのは負でない値だけである。 光源が(並行光源でなく)点光源の場合の光の強度は、 定数項、1次の係数に光源と照らされる点の距離を掛けた値、 2次の係数に同じ距離の二乗を掛けた値を足し合わせ、それを さらに逆数にした結果で減衰する。 減衰係数の初期値は (1, 0, 0) である。 この場合、減衰はまったくしない。
 

注意

GL_LIGHT$i$ = GL_LIGHT0 + $i$ は常に成り立つ。  

エラー

GL_INVALID_ENUM: light または pname の値が不正な場合に起こる。 GL_INVALID_VALUE: スポット指数の値が [0,128] の範囲にない場合、 スポットの切捨て角が [0,90] の範囲にない場合(特別な値である 180 は除く)、 減衰係数が負の値である場合に起こる。 GL_INVALID_OPERATION: glBegin と、その対になる glEnd の間で glLight を 実行すると起こる。  

関連する取得値

glGetLight
引き数 GL_LIGHTING を指定した glIsEnabled  

関連項目

glColorMaterial(3G), glLightModel(3G), glMaterial(3G)


 

Index

名前
書式
引き数
書式
引き数
説明
注意
エラー
関連する取得値
関連項目

jman



Time: 07:01:08 GMT, January 12, 2009