2013-08-27 91 views
1

我嘗試混合兩個紋理的alpha。首先紋理它的一些圖像,第二紋理這是矩形與透明的圓形在中心。我需要混合這兩個紋理,以便我的背景與transperent在中心。爲此,我嘗試使用glBlendFunc,但我只能得到整個透明背景,換句話說,我的背景全部變得透明。我怎樣才能通過glBlendFunc混合alpha的紋理?在opengl 2.0中混合alpha 0

回答

1

一個問題是,您無法使用GLUtils.texImage2D()從Android上的位圖加載Alpha紋理。這是Google真正需要更好記錄的常見問題。問題在於Bitmap類將所有圖像轉換爲預倍數格式,但這不適用於OpenGL ES,除非圖像完全不透明。本文給出了更多關於這方面的細節:

http://software.intel.com/en-us/articles/porting-opengl-games-to-android-on-intel-atom-processors-part-1

要使用glBlendFunc(),您必須首先glEnable(GL_BLEND)啓用它,而是用OpenGL ES混合2個紋理一起以最快的方式2.0是做它在片段着色器中。這裏有一個簡單的例子:

uniform sampler2D sampler2d_0; 
uniform sampler2D sampler2d_1; 
varying mediump vec2 texCoord; 

void main() 
{ 
    vec3 vTexture0 = texture2D(sampler2d_0, texCoord); 
    vec3 vTexture1 = texture2D(sampler2d_1, texCoord); 
    vec3 vColor = mix(vTexture0, vTexture1, alpha); 

    gl_FragColor = vec4(vColor, 1.0); 
}