私はあなたがOpenGL ES 1.1マルチテクスチャとGL_COMBINE
環境を使用してそれを行うことができると思います。まず、カラーテクスチャのためにあなたが望む標準どんな環境を使用します。
は
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, rgbTexture);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); //or maybe GL_REPLACE
は、第2ユニットにバインドされているアルファテクスチャ、のために、私たちは前のステージからの色(カラーテクスチャを)取るだけテクスチャのアルファを使用してください。
glActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_2D, alphaTexture);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE);
glTenEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_REPLACE);
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB, GL_PREVIOUS);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB, GL_SRC_COLOR); //default
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA, GL_MODULATE); //or maybe GL_REPLACE
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_ALPHA, GL_TEXTURE); //default
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA, GL_SRC_ALPHA); //default
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_ALPHA, GL_PREVIOUS); //default
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_ALPHA, GL_SRC_ALPHA); //default
私はあなたを誤解して、マルチテクスチャ(とどちらもフラグメントシェーダ)を使用したくない場合は、レンダリング中に、これらの2つのテクスチャを組み合わせることができなくなります。おそらくマルチパス技術を使っているかもしれませんが、パフォーマンス面で何かを買うかどうかは分かりません。
2つのテクスチャを完全にレンダリングすることなく(したがってマルチテクスチャを使用して)、テクスチャは特定のフラグメントのために読み込まれるたびに解凍されるだけなので、それらを組み合わせることはありません。だから、テクスチャ全体を解凍して一つにまとめることはできません。あなたはこれを行うことができますが、標準的な圧縮されていないテクスチャで終わるだけで、何も買わないでしょう。フラグメントシェーダ(przemo_liの答え)または固定機能のマルチテクスチャ(私の答え)が唯一の方法です。 –