最終更新: mikk_ni3_92 2009年02月06日(金) 12:45:34履歴
現在地: メニュー >> 発展編01 >> 発展編01::テクスチャcombine
テクスチャCombineの機能を使うと、ポリゴンにテクスチャを張る時、
下地の色を置き換える、などよりも更に細かい色の設定ができる。
(例えば、下地の各対応ピクセル値との和、差をとる事ができる)
処理の指定も「glTexEnvi()関数」を使う。
処理の仕方は以下の通り
※Arg0,Arg1,Arg2について
Arg0,Arg1,Arg2については、どの色がArg0〜Arg1に対応するかを設定する必要がある。
これも同様に、「glTexEnvi()関数」を使う。
Argxと関連付けるものは以下の通り。
【例】
サンプルコード
テクスチャCombineの機能を使うと、ポリゴンにテクスチャを張る時、
下地の色を置き換える、などよりも更に細かい色の設定ができる。
(例えば、下地の各対応ピクセル値との和、差をとる事ができる)
処理の指定も「glTexEnvi()関数」を使う。
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB or GL_COMBINE_ALPHA, 処理方法の指定);
処理の仕方は以下の通り
トークン | 処理内容 |
GL_REPLACE | Arg0の色で置き換え |
GL_MODULATE | Arg0 * Arg1 |
GL_ADD | Arg0 + Arg1 |
GL_ADD_SIGNED | Arg0 + Arg1 - 0.5 |
GL_INTERPOLATE | (Arg0*Arg2)+(Arg1 * (1-Arg2) ) |
GL_SUBTRACT | Arg0 - Arg1 |
GL_DOT3_RGB/GL_DOT3_RGBA | 4*( (Arg0-0.5)・(Arg1-0.5) ) ※「・」は内積。各要素0.5引いたものの内積 |
※Arg0,Arg1,Arg2について
Arg0,Arg1,Arg2については、どの色がArg0〜Arg1に対応するかを設定する必要がある。
これも同様に、「glTexEnvi()関数」を使う。
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCEx_RGB or GL_SOURCEx_ALPHA , Argxとの関連付けるもの);
※xは「0」、「1」、「2」のどれか
Argxと関連付けるものは以下の通り。
トークン | 内容 |
GL_TEXTURE | 現在アクティブなテクスチャユニット |
GL_TEXTUREx | x番目のテクスチャユニット |
GL_CONSTANT | 「GL_TEXTURE_ENV_COLOR」で設定した値 |
GL_PRIMARY_COLOR | 下地(ポリゴン)の色 |
GL_PREVIOUS | 前のテクスチャユニットのテクスチャ環境で設定した値 |
【例】
//Combine用にArg0,Arg1に対応付け glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB, GL_PRIMARY_COLOR);//ポリゴンの色がArg0 glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_RGB, GL_TEXTURE0);//テクスチャユニット0の色がArg1 glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE);//combine glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_REPLACE);//Arg0(ポリゴンの色)で置き換え
サンプルコード