0

これはおそらく初心者の質問ですが、私は適切な答えを見つけることができませんでした:

OpenGL ESにオブジェクト(実際には、BlenderからのUVマップエクスポート)があり、それに2つのテクスチャを適用したいと思います。正確には、地球のような球体があり、それに2つのテクスチャ(昼側と夜側)を追加したいと思います。

アルファマッピングを通して考えたのですが、実行時に一方のテクスチャをプログラムでフェードし、もう一方のテクスチャを表示して、地球が地球のリアルなシミュレーションになるようにすることができるはずです。私にはその背後にある数学があります。つまり、オブジェクトの各面のアルファマップを作成することは問題ではありません。

これをどのように達成できるかについてのヒント/ポインターはありますか?

ありがとう

4

1 に答える 1

5

探している効果は、OpenGLES1.1のテクスチャコンバイナを使用して実現できます。デフォルトでは、有効にする各テクスチャユニットは、前のステージの出力に現在のテクスチャの色を掛けるように設定されています。最初のテクスチャユニットの場合、前のステージは単に頂点カラーです。テクスチャコンバイナの状態を変更することで、代わりにテクスチャサンプルの内積を加算、減算、補間、または取得できます。

リンクされたページの2番目と3番目の例は、2つのテクスチャ間を補間するものであり、実行しようとしているものとかなり似ているはずです。GL_SRC2_RGB2つの例のソースコードを比較すると、 /GL_SRC2_ALPHAGL_OPERAND2_RGB/の構成を除いて、ほぼ同じであることがわかりますGL_OPERAND2_ALPHA。ここで何を指定する必要があるかは、2つのテクスチャのブレンド係数をどこで/どのように生成するかによって異なります。例に示されていないGL_PRIMARY_COLORforを指定することにより、頂点カラーからソースを取得できます。GL_SRC2_*

(注:リンク先のページでは、テクスチャコンバイナーの代わりにGLSLを使用することを推奨しています。残念ながら、ソフトウェアをOpenGL ES 2.0をサポートしない古いハードウェアで実行する必要がある場合、これはオプションではありません。)

于 2009-12-24T07:58:17.397 に答える