GLTEXGEN
Section: Misc. Reference Manual Pages (3G)
索引
xjman
名前
glTexGend, glTexGenf, glTexGeni, glTexGendv, glTexGenfv, glTexGeniv
- テクスチャ座標の生成を制御する
書式
void glTexGend(
GLenum coord,
GLenum pname,
GLdouble param )
void glTexGenf(
GLenum coord,
GLenum pname,
GLfloat param )
void glTexGeni(
GLenum coord,
GLenum pname,
GLint param )
delim $$
引き数
- coord
-
テクスチャ座標を指定する。
GL_S, GL_T, GL_R, GL_Q の
いずれかを指定しなければならない。
- pname
-
テクスチャ座標生成関数のシンボル名を指定する。
GL_TEXTURE_GEN_MODE でなければならない。
- param
-
テクスチャ生成のパラメータを指定する。
これは値をひとつ持ち、値は
GL_OBJECT_LINEAR, GL_EYE_LINEAR, GL_SPHERE_MAP
のいずれかである。
書式
void glTexGendv(
GLenum coord,
GLenum pname,
const GLdouble *params )
void glTexGenfv(
GLenum coord,
GLenum pname,
const GLfloat *params )
void glTexGeniv(
GLenum coord,
GLenum pname,
const GLint *params )
引き数
- coord
-
テクスチャ座標を指定する。
GL_S, GL_T, GL_R, GL_Q のいずれか
でなければならない。
- pname
-
テクスチャ座標生成関数または関数のパラメータのシンボル名を
指定する。
GL_TEXTURE_GEN_MODE,
GL_OBJECT_PLANE,
GL_EYE_PLANE
のいずれかでなければならない。
- params
-
テクスチャ生成のパラメータの配列を指すポインタを指定する。
pname が GL_TEXTURE_GEN_MODE ならば、この配列は
シンボル定数ひとつだけを値として持たなければならない。
その場合の値は、GL_OBJECT_LINEAR,
GL_EYE_LINEAR, GL_SPHERE_MAP のいずれかである。
それ以外の場合には、params は pname によって指示された
テクスチャ座標生成関数の係数を保持している。
説明
glTexGen は、テクスチャ座標生成関数の選択を行なうか、あるいは
テクスチャ座標生成関数に対しての係数の指定を行なう。
coord は、テクスチャの (s, t, r, q) 座標の
ひとつを指定する。
coord の値はシンボル
GL_S,
GL_T,
GL_R,
GL_Q のいずれかでなければならない。
pname は次の 3 つのシンボル定数のいずれかでなければならない:
GL_TEXTURE_GEN_MODE,
GL_OBJECT_PLANE,
GL_EYE_PLANE。
pname が GL_TEXTURE_GEN_MODE である場合には
params はモードを選択する。
その場合の値は、
GL_OBJECT_LINEAR,
GL_EYE_LINEAR,
GL_SPHERE_MAP のいずれかである。
pname が GL_OBJECT_PLANE または GL_EYE_PLANE の
場合には、params はそれぞれに対応するテクスチャ生成関数の係数を
保持している。
テクスチャ生成関数が GL_OBJECT_LINEAR の場合には、関数
$g ~=~ p sub 1^x sub o ~+~ p sub 2^y sub o ~+~ p sub 3^z sub o ~+~ p sub 4^w sub o$
が使われる。ここで $g$ は coord で指示されている座標に
対して計算された値である。
$p sub 1$, $p sub 2$, $p sub 3$, $p sub 4$ は params で
与えられる 4 個の値である。
$x sub o$, $y sub o$, $z sub o$, $w sub o$ は頂点の
オブジェクト座標である。
この関数を使うと、例えば高さゼロの面(sea level)を参照平面として用いて
($p sub 1$, $p sub 2$, $p sub 3$, $p sub 4$ により定義される)
図形にテクスチャマップ処理を行なうことができる。
図形の頂点の高さは、座標生成関数 GL_OBJECT_LINEAR に
よって計算される。この高さは、高さゼロの面からの距離である。
計算により得た、この高さを使うと、テクスチャ画像をインデックス付けし、
木の先端に雪をマップしたり、丘に草をマップしたりすることができる。
テクスチャ生成関数が GL_EYE_LINEAR の場合、関数
$g ~=~ p sub 1 sup prime ^x sub e ~+~ p sub 2 sup prime ^y sub e ~+~ p sub 3 sup prime ^z sub e ~+~ p sub 4 sup prime ^w sub e$
が使われる。ここで
$( p sub 1 sup prime
~~p sub 2 sup prime~~p sub 3 sup prime~~
{ p sub 4 sup prime}) ~=~ ( p sub 1~~ p sub 2~~ p sub 3~~ p sub 4 ) ~M sup -1$
である。
$x sub e$, $y sub e$, $z sub e$, $w sub e$ は頂点の眼点座標である。
$p sub 1$, $p sub 2$, $p sub 3$, $p sub 4$ は params により
与えられた値である。
$M$ は glTexGen が呼び出された時のモデルビュー行列である。
$M$ が条件がよくない行列、あるいは特異行列である場合には、
結果として得られる関数が生成するテクスチャ座標は不正確または
未定義になることがある。
params に格納されている値は、眼点座標内で参照平面を
定義する点に注意すること。
これらに適用されるモデルビュー行列は、ポリゴンの頂点が座標変換
された際に有効だったモデルビュー行列と同じとは限らない。
この関数はテクスチャ座標の集合を作る。これを用いると、
動くオブジェクト上に動的な等高線を作ることができる。
pname が GL_SPHERE_MAP であり、かつ coord が
GL_S または GL_T の場合には、
テクスチャ座標 $s$, $t$ は以下のように生成される。
まず、u を原点からポリゴンの頂点(眼点座標)を指す単位ベクトルとする。
次に $n sup prime$ を現在の法線とし(眼点座標に変換したもの)、
$f ~=~ ( f sub x~~f sub y~~f sub z ) sup T$
を条件式
$f ~=~ u ~-~ 2 n sup prime n sup prime sup T u$
を満たす反射ベクトルとする。
最後に $ m ~=~ 2 sqrt { f sub x sup {~2} ~+~ f sub y sup {~2} ~+~ (f sub z ~+~ 1 ) sup 2}$ とする。
すると、テクスチャ座標 $s$, $t$ に割り当てられる値は
$s ~=~ f sub x over m ~+~ 1 over 2$
$t ~=~ f sub y over m ~+~ 1 over 2$
となる。
テクスチャ座標生成関数を有効または無効にするには、
glEnable または glDisable を呼ぶ。
その際の引き数には、テクスチャ座標名を示すシンボル定数
(GL_TEXTURE_GEN_S,
GL_TEXTURE_GEN_T,
GL_TEXTURE_GEN_R,
GL_TEXTURE_GEN_Q) を指定する。
テクスチャ座標生成関数が有効である場合、
指定されたテクスチャ座標は、その座標に関連付けられた生成関数に
従って計算される。
テクスチャ座標生成関数が無効である場合、
結果として得られる頂点群は、指定されたテクスチャ座標を
現在のテクスチャ座標の集合から取る。
初期状態では、全てのテクスチャ生成関数には GL_EYE_LINEAR が
設定されており、関数自体は無効にされている。
$s$ 平面の方程式はどちらも (1, 0, 0, 0) であり、
$s$ 平面の方程式はどちらも (0, 1, 0, 0) であり、
$r$, $q$ 平面の方程式は全て (0, 0, 0, 0) である。
実装が GL_ARB_multitexture 機能拡張に対応している場合、
glTexGen は現在アクティブになっているテクスチャユニット
に対してテクスチャ生成のパラメータを設定する。
テクスチャユニットは glActiveTextureARB を使って選択する。
エラー
GL_INVALID_ENUM:
coord および pname が定義されている指定可能な値でない場合
および、pname が GL_TEXTURE_GEN_MODE であり、かつ
params が定義されている指定可能な値でない場合に起こる。
GL_INVALID_ENUM:
pname が GL_TEXTURE_GEN_MODE であり、かつ
params が GL_SPHERE_MAP であり、さらに
coord が GL_R または GL_Q の場合に起こる。
GL_INVALID_OPERATION:
glTexGen が、glBegin とその対になる glEnd との
間で実行されると起こる。
関連する取得値
glGetTexGen
引き数 GL_TEXTURE_GEN_S を指定した glIsEnabled
引き数 GL_TEXTURE_GEN_T を指定した glIsEnabled
引き数 GL_TEXTURE_GEN_R を指定した glIsEnabled
引き数 GL_TEXTURE_GEN_Q を指定した glIsEnabled
関連項目
glActiveTextureARB(3G),
glCopyPixels(3G),
glCopyTexImage2D(3G),
glCopyTexSubImage1D(3G),
glCopyTexSubImage2D(3G),
glCopyTexSubImage3D(3G),
glTexEnv(3G),
glTexImage1D(3G),
glTexImage2D(3G),
glTexImage3D(3G),
glTexParameter(3G),
glTexSubImage1D(3G),
glTexSubImage2D(3G),
glTexSubImage3D(3G)
Index
- 名前
-
- 書式
-
- 引き数
-
- 書式
-
- 引き数
-
- 説明
-
- エラー
-
- 関連する取得値
-
- 関連項目
-
Time: 07:01:11 GMT, January 12, 2009