1

私がやろうとしているのは、OpenGL ES 1.1 を使用して iPhone でマスクされたテクスチャを出力することです。実際に最終結果の ALPHA を変化させたいと思うまでは、デフォルトの結合動作が有利に働くようです!

'a' (アルファ) float 変数は、ここでは効果がありません: (他のすべては正常に出力されます。アルファが制御不能な 1.0 Opaque であることを除けば、マスクされて適切に描画されます)。

/* Setup First Texture (RGBA Texture) */
glClientActiveTexture(GL_TEXTURE0);
glActiveTexture(GL_TEXTURE0);
glColor4f(r, g, b, a);
glBindTexture(GL_TEXTURE_2D, t->tx);
glVertexPointer(2, GL_FLOAT, 0, afPos);
glTexCoordPointer(2, GL_FLOAT, 0, afUV);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);

/* Setup Mask (RGBA Texture, White to Transparent Gradient) */
glClientActiveTexture(GL_TEXTURE1);
glActiveTexture(GL_TEXTURE1);
glEnable(GL_TEXTURE_2D);
glColor4f(r, g, b, a);
glBindTexture(GL_TEXTURE_2D, tMask->tx);
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glVertexPointer(2, GL_FLOAT, 0, afPos);
glTexCoordPointer(2, GL_FLOAT, 0, afUV);

/* Make the Mask Repeat */
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);


/* Draw Both */
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);

[編集] 色全体にはまったく効果がなく、まるで (1, 1, 1, 1) に設定されているかのようで、アルファだけではありません.[/編集]

フォトショップにマスクされたレイヤーが正しく表示されていると考えてください。レイヤーの不透明度を設定するだけです。私はあなたの助けに感謝します!

4

1 に答える 1

1

それが GL_REPLACE の機能です。最終的なフラグメント カラーはテクスチャ カラーです。最終的なフラグメント カラーがテクスチャ カラーと頂点カラーの乗算である GL_MODULATE を使用することもできます。

于 2010-09-17T04:34:47.550 に答える