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
- 名前
-
- 書式
-
- 引き数
-
- 書式
-
- 引き数
-
- 説明
-
- 注意
-
- エラー
-
- 関連する取得値
-
- 関連項目
-
Time: 07:01:08 GMT, January 12, 2009