OMG ... Я полностью исправил это. Фрагмент шейдера выглядит так:
varying mediump float text_alpha_out;
varying mediump vec2 text_coord_out;
uniform sampler2D sampler;
void main()
{
gl_FragColor = texture2D(sampler, text_coord_out);
gl_FragColor = gl_FragColor * text_alpha_out;
}
и мое смешивание выглядит так:
glEnable(GL_BLEND);
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);