我觉得要用着色器吧,从纹理中采样颜色并与顶点颜色相乘
// 如果纹理坐标超过右侧,则丢弃该片段
// 默认输出颜色为白色
vec4 o = vec4(1.0, 1.0, 1.0, 1.0);
// 从纹理中采样颜色并与顶点颜色相乘
o *= texture2D(mainTexture, v_uv0);
o *= v_color;
float start = texSize.z / (texSize.z + texSize.w);
float scale = texSize.w / texSize.z;
if (v_uv0.x > start) {
discard;
} else {
// 计算水平alpha值
o.a = getHAlpha(v_uv0, scale, start);
}
float getHAlpha(vec2 uv, float scale, float offset) {
vec2 auv = vec2(uv.x * scale + offset, uv.y * scale);
return texture2D(mainTexture, auv).r;
}



