2013-11-22 78 views
0

由于ETC纹理不支持alpha通道,我试图混合两个ETC纹理。 任何人的你知道如何翻译成的Open GL ES 1.x的如何在OpenGL ES中混合两个纹理1

varying mediump vec2 uv0; 
uniform sampler2D texture; 
uniform sampler2D texture_alpha; 

void main() 
{ 
    vec4 color  = texture2D(texture, uv0); 
    vec4 color_a = texture2D(texture_alpha, uv0); 
    vec4 final_color = vec4(color.rgb, color_a.r); 
    gl_FragColor = final_color; 
} 

这这是opengles 2.0片段着色器。由于Open GL ES 1.x不支持着色器,因此可以使用 。我真的需要你的支持。

+0

的[创建从多纹理新的纹理]可能重复(http://stackoverflow.com/questions/6997774/create-new- texture-from-multitexture) –

+0

谢谢,它似乎是如此。 –

回答

0

您可以通过渲染第一个纹理而不进行混合来完成此操作,然后在第一个纹理上启用混合并渲染第二个纹理。这将需要两次调用(4,8)这在他们之间启用混合:

glEnable(GL_BLEND); 
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 

glEnableClientState(GL_COLOR_ARRAY); 
glColorPointer() 
+0

尽管使用多纹理(ES 1.1应具有)可能会更好。 –