テクスチャコンバイナがお手伝いします。あなたの拡散テクスチャが1.0アルファ値と不透明度のテクスチャが白い色を持っている場合は、この方法を使用します。
//Multiply textureID0 with textureID1
glActiveTexture(GL_TEXTURE0);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, textureID0);
//Simply sample the texture
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
//------------------------
glActiveTexture(GL_TEXTURE1);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, textureID1);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE);
//Sample RGB, multiply by previous texunit result
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_MODULATE); //Modulate RGB with RGB
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB, GL_PREVIOUS);
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_RGB, GL_TEXTURE);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB, GL_SRC_COLOR);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_RGB, GL_SRC_COLOR);
//Sample ALPHA, multiply by previous texunit result
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA, GL_MODULATE); //Modulate ALPHA with ALPHA
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_ALPHA, GL_PREVIOUS);
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_ALPHA, GL_TEXTURE);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA, GL_SRC_ALPHA);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_ALPHA, GL_SRC_ALPHA);
そうしないと、チューンの設定を組み合わせることができます。代わりにGL_MODULATEの設定GL_REPLACE。追加情報はこちら:http://www.opengl.org/wiki/Texture_Combiners
あなたは、OpenGL 2.0、またはOpenGLを使用しようとしている** ES ** 2.0?それらは同じものではありません。バージョン1.1では同じ質問が出ますが、実際には*同じものではありません。 –
@NicolBolasのOpenGL ES 1.1および2.0 – givi