1

我要做的是使用 OpenGL ES 1.1 在 iPhone 上输出蒙版纹理。在我真正想要改变最终结果的 ALPHA 之前,默认的组合行为似乎对我有利!

'a' (Alpha) 浮点变量在这里没有效果:(其他一切都输出正常,除了 alpha 不可控制的 1.0 不透明之外,它被屏蔽并很好地绘制)

/* 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);

[edit]整个颜色根本没有效果,就好像它被设置为 (1, 1, 1, 1) 所以它不仅仅是 alpha。[/edit]

把它想象成你在 Photoshop 中有一个看起来正确的蒙版图层,现在我要做的就是设置该图层的不透明度。我感谢您的帮助!

4

1 回答 1

1

这就是GL_REPLACE所做的,最终的片段颜色是纹理颜色,也许你想使用GL_MODULATE,最终片段颜色是纹理颜色和顶点颜色的乘积。

于 2010-09-17T04:34:47.550 回答