我使用webgl绘制二维图片,使用两个三角形,比使用画布二维上下文更快。我把事情做得很简单,因为我只用来画画,没有3d。
现在我正在尝试为片段着色器添加不透明度,因为webgl上下文没有.globalalpha属性。
这是我的代码:
<script id="2d-fragment-shader" type="x-shader/x-fragment">
precision mediump float;
uniform sampler2D u_image;
varying vec2 v_texCoord;
uniform float alpha;
void main()
{
gl_FragColor = vec4(texture2D(u_image, vec2(v_texCoord.s, v_texCoord.t)).rgb, alpha);
}
</script>
...
webglalpha = gl.getUniformLocation(gl.program, "alpha");
...
gl.uniform1f(webglalpha, d_opacity);
不透明度是绘图函数作为参数获得的不透明度值。
不透明度发生了变化,但现在我的透明png变成了黑色背景,尽管以前我还在使用png透明度
gl_FragColor = texture2D(u_image, vec2(v_texCoord.s, v_texCoord.t));
如何设置不透明度而不丢失pngs透明度?