Android 将alpha值发送到片段着色器

Android 将alpha值发送到片段着色器,android,opengl-es,Android,Opengl Es,我有一个片段着色器: precision mediump float; uniform vec4 vColor; uniform sampler2D u_Texture; // The input texture. varying vec2 v_TexCoordinate; // Interpolated texture coordinate per fragment. varying vec4 vAlpha; void main() { gl_FragColor = vec4(

我有一个片段着色器:

precision mediump float;

uniform vec4 vColor;
uniform sampler2D u_Texture;    // The input texture.

varying vec2 v_TexCoordinate;   // Interpolated texture coordinate per fragment.
varying vec4 vAlpha;
void main() {
 gl_FragColor = vec4(texture2D(u_Texture, v_TexCoordinate).xyz, texture2D(u_Texture, v_TexCoordinate).w * vAlpha[3]);

}
和顶点着色器:

attribute vec3 vPosition;
attribute vec2 aTextureCoord; // Per-vertex texture coordinate information we will pass in.
attribute vec4 aAlpha;
varying vec2 v_TexCoordinate;
varying vec4 vAlpha;
void main() {
     v_TexCoordinate = aTextureCoord;
     vAlpha = aAlpha;
     gl_Position = uMVPMatrix * vec4(vPosition,1.0);
}
并尝试从我的程序中将alpha值设置为纹理

private final int mAlphaHandle;
private float[] color = {0.5f};
设置:

使用:

    GLES20.glEnableVertexAttribArray(mAlphaHandle);
    GLES20.glVertexAttribPointer(mAlphaHandle, 1,GLES20.GL_FLOAT, false,4, alphaBuffer);
混合已启用

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

但是我在屏幕上没有效果。所以问题是为什么我在屏幕上没有效果?实际上,a希望在将来动态更改alpha值

如果将“vAlpha[3]”替换为1.0,您是否可以看到场景(如果不是,问题不在alpha缓冲区中)?还有,你的字母表是什么?我希望你的GLSL编译器足够聪明,不需要实际做两个纹理获取:)我会考虑<代码> GL*FraceChu色t= Trave2D(UA-纹理,VX-TealSt坐标)*VEC4(VEC3(1),ValPHA(3));<代码>,以防万一。
    GLES20.glEnable(GLES20.GL_BLEND);
    GLES20.glBlendFunc(GLES20.GL_SRC_ALPHA, GLES20.GL_ONE_MINUS_SRC_ALPHA);