2 つの RGBA8 テクスチャがあります。
A) すべてのチャネルで表示するためのデータを含む「メイン」テクスチャ
B) アルファに意味のあるデータのみを持つ「グラデーション」テクスチャ (もちろん、これは実際には A8 テクスチャである必要があります)
OpenGLES 1.1 テクスチャ コンバイナーを使用して、結果のテクセルでテクスチャ #A から RGB をコピーし、両方のテクスチャから変調されたアルファ (テクスチャ A からのアルファ * テクスチャ B からのアルファ) を使用したいと考えています。
テクスチャ コンバイナ コードに問題があり (既にモンキーを試してみました)、誰かが問題を見つけられるかどうか疑問に思っていました:
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, geometryP->texName);
glTexCoordPointer(2, GL_BYTE, 0, geometryP->texCoordsP);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
glActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_2D, mGradientTextureName);
glTexCoordPointer(2, GL_BYTE, 0, geometryP->texCoordsP);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE);
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_REPLACE);
glTexEnvi(GL_TEXTURE_ENV, GL_SRC0_RGB, GL_PREVIOUS);
glTexEnvi(GL_TEXTURE_ENV, GL_SRC1_RGB, GL_TEXTURE);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB, GL_SRC_COLOR);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_RGB, GL_SRC_COLOR);
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA, GL_MODULATE);
glTexEnvi(GL_TEXTURE_ENV, GL_SRC0_ALPHA, GL_TEXTURE);
glTexEnvi(GL_TEXTURE_ENV, GL_SRC1_ALPHA, GL_TEXTURE);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA, GL_SRC_ALPHA);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_ALPHA, GL_SRC_ALPHA);
基本的に得られる結果は、テクスチャ #A (メイン テクスチャ) の RGBA のように見えます。