GLLIGHTMODEL
Section: Misc. Reference Manual Pages (3G)
索引
xjman
名前
glLightModelf, glLightModeli, glLightModelfv, glLightModeliv
- ライティングモデルのパラメータを設定する
書式
void glLightModelf(
GLenum pname,
GLfloat param )
void glLightModeli(
GLenum pname,
GLint param )
delim $$
引き数
- pname
-
値をひとつ取るライティングモデルのパラメータを指定する。
GL_LIGHT_MODEL_LOCAL_VIEWER,
GL_LIGHT_MODEL_COLOR_CONTROL,
GL_LIGHT_MODEL_TWO_SIDE を指定できる。
- param
-
param に設定する値を指定する。
書式
void glLightModelfv(
GLenum pname,
const GLfloat *params )
void glLightModeliv(
GLenum pname,
const GLint *params )
引き数
- pname
-
ライティングモデルのパラメータを指定する。
GL_LIGHT_MODEL_AMBIENT,
GL_LIGHT_MODEL_COLOR_CONTROL,
GL_LIGHT_MODEL_LOCAL_VIEWER,
GL_LIGHT_MODEL_TWO_SIDE を指定できる。
- params
-
params に設定する値(複数のこともある)を指すポインタを指定する。
説明
glLightModel はライティングモデルのパラメータを設定する。
pname はパラメータを示し、params は新しい値を与える。
ライティングのパラメータは 3 個ある:
- GL_LIGHT_MODEL_AMBIENT
-
params は、4個の整数値または浮動小数点値を取る。
これらの値は、シーン全体における環境光の RGBA 強度を指定する。
整数値のマッピングは線形に行われる。
この際、表現可能な正の最大値が 1.0 にマップされ、
表現可能な負の最小値が -1.0 にマップされる。
浮動小数点値は直接マッピングされる。
整数値も浮動小数点値も値の調整は行われない。
シーンの環境光の強度の初期値は (0.2, 0.2, 0.2, 1.0) である。
- GL_LIGHT_MODEL_COLOR_CONTROL
-
params は GL_SEPARATE_SPECULAR_COLOR または
GL_SINGLE_COLOR でなければならない。
GL_SINGLE_COLOR は、ひとつの頂点に対するライティングの
計算結果から生成される色を指定する。
GL_SEPARATE_SPECULAR_COLOR は、ライティングにおける
鏡面反射色の計算結果をライティング計算の残りの結果とは別に格納する
ことを指定する。
鏡面反射色は足し合わされ、(もし有効ならば)テクスチャマッピングの
適用後に、生成された微小要素の色となる。
初期値は GL_SINGLE_COLOR である。
- GL_LIGHT_MODEL_LOCAL_VIEWER
-
params はひとつの整数値または浮動小数点値であり、
鏡面反射角の計算方法を指定する。
params が 0 (または 0.0) ならば、眼点座標における頂点の位置に
関わらず、鏡面反射角は視線方向に並行かつ -z 軸方向を向く。
それ以外の場合には、鏡面反射は眼点座標系の原点から計算される。
初期値は 0 である。
- GL_LIGHT_MODEL_TWO_SIDE
-
params は1個の整数値または浮動小数点値である。
この値は、ポリゴンに対するライティングの計算を、片面または両面の
どちらに対して行うかを指定する。
点、線、ビットマップに対しては、ライティングの計算は
まったく効果がない。
params が 0 (または 0.0) ならば、片面のライティング計算が
指定され、かつ front の材質パラメータがライティングの計算式
で使われる。
それ以外の場合には、両面のライティング計算が指定される。
この場合には、裏面のポリゴンの頂点は back の材質パラメータを
使ってライティング処理される。
その際、これらの頂点の法線については、ライティングの計算式が
評価される前に向きが反転される。
表面のポリゴンの頂点は、必ずライティング処理される。
その際には front の材質パラメータが使われ、法線は
変更なしにそのまま使われる。
初期値は 0 である。
RGBA モードでは、頂点のライティングの色は、
材質の発光強度、
現在のライティングモデルにおけるシーン全体での環境光の強度と材質の環境反射の積、
有効状態にある各光源の寄与の総和である。
各光源の寄与は次の3つの項の和である:
環境光、拡散光、反射光。
環境光の光源の寄与は、材質の環境光の反射率と光源の環境光の強度の積である。
拡散光の光源の寄与は、材質の拡散光の反射率と光源の環境光の強度、
ある頂点における法線とその頂点から光源に向かうベクトルを正規化したものの内積の積である。
反射光の光源の寄与は、材質の反射光の反射率と光源の反射光の強度、
頂点から眼点へ向かうベクトルと頂点から光源へ向かうベクトル(両者とも正規化)の内積の積に、材質の明るさを乗じた値である。
これら3つの光源全ては、
頂点から光源への距離や
光源の方向、
拡散指数、
カットオフ角の広さ
に基づいて同じように減衰する。
どの内積についても、負の値と評価された場合の結果は 0 に置き換えられる。
結果として得られる、ライティング処理された色のアルファ要素には、
材質の拡散反射率のアルファ値が設定される。
色インデックスモードにおいては、
ある頂点におけるライティング処理されたインデックス値は、
GL_COLOR_INDEXES を使って glMaterial に渡した
拡散値から反射値の範囲の値を取る。
拡散係数および反射係数は、結果として得られるインデックス値が
上記の環境光よりどれくらい大きくなるのかを決める。
この拡散係数および反射係数は、
光の色の重み付けである (.30, .59, .11) および
材質の明るさ、
RGBA モードの場合と同じ反射・減衰の計算式を使って計算される。
注意
GL_LIGHT_MODEL_COLOR_CONTROL は、バージョン 1.2 以降の GL
でなければ利用できない。
エラー
GL_INVALID_ENUM:
pname の値が不正な場合に起こる。
GL_INVALID_ENUM:
pname が GL_LIGHT_MODEL_COLOR_CONTROL であり、かつ
params が GL_SINGLE_COLOR と GL_SEPARATE_SPECULAR_COLOR
のいずれでもない場合に起こる。
GL_INVALID_OPERATION:
glBegin と、その対になる glEnd の間で
glLightModel が実行されると起こる。
関連する取得値
引き数を GL_LIGHT_MODEL_AMBIENT とした glGet
引き数を GL_LIGHT_MODEL_COLOR_CONTROL とした glGet
引き数を GL_LIGHT_MODEL_LOCAL_VIEWER とした glGet
引き数を GL_LIGHT_MODEL_TWO_SIDE とした glGet
引き数を GL_LIGHTING とした glIsEnabled
関連項目
glLight(3G),
glMaterial(3G)
Index
- 名前
-
- 書式
-
- 引き数
-
- 書式
-
- 引き数
-
- 説明
-
- 注意
-
- エラー
-
- 関連する取得値
-
- 関連項目
-
Time: 07:01:08 GMT, January 12, 2009