我有一个非常简单的2d正方形,可以从纹理渲染游戏精灵。所有这些都工作得很好,除了应将纹理中应透明的区域渲染为黑色。如何渲染这些透明区域以显示正方形后面的对象(在本例中为背景)?



如果相关,这是简单的片段着色器:

uniform sampler2D uTexture;
varying vec2 vImagePosition;
void main(){
    gl_FragColor =  texture2D(uTexture, vImagePosition);
}


和顶点着色器:

attribute vec4 aPosition;
attribute vec2 aImagePosition;
uniform mat4 uMVPMatrix;
varying vec2 vImagePosition;
void main(){
    gl_Position = uMVPMatrix*aPosition;
    vImagePosition = aImagePosition;
}

最佳答案

经过几个小时的搜索,我实际上偶然发现了答案。您必须打开混合。希望这对其他人有帮助。

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

10-08 14:09