WebGL blendFunc错误或误解?

WebGL blendFunc错误或误解?,webgl,alphablending,glblendfunc,Webgl,Alphablending,Glblendfunc,我试图在黑色背景上画一个半透明的黑色三角形 这是我的样本: 设置并启用blendFunc(第151行): 缓冲区被清除为黑色(第129行): 着色器将填充半透明黑色(第10行): 我希望三角形是黑色的,因为文件上说 result = {foreground}*sourceAlpha + {background}*(1-sourceAlpha) = (0,0,0,.5)*.5 + (0,0,0,1)*.5 = (0,0,0,.75) 哪个是黑色的,对吗 那么灰色是从

我试图在黑色背景上画一个半透明的黑色三角形

这是我的样本:

设置并启用blendFunc(第151行):

缓冲区被清除为黑色(第129行):

着色器将填充半透明黑色(第10行):

我希望三角形是黑色的,因为文件上说

result = {foreground}*sourceAlpha + {background}*(1-sourceAlpha)
       = (0,0,0,.5)*.5 + (0,0,0,1)*.5
       = (0,0,0,.75)
哪个是黑色的,对吗

那么灰色是从哪里来的呢?

(多么尴尬。在发帖后3分钟回答我自己的问题,但不是在严重脱发之前)

灰色来自HTML页面的白色背景,在黑色画布上“打”了一个3/4透明的孔后显示出来

添加

style="background:black;"
到标签解决了这个问题

[gman的评论,下面,是一个更好的修复方法]

(多么令人尴尬。在发帖后3分钟回答我自己的问题,但不是在严重脱发之前)

灰色来自HTML页面的白色背景,在黑色画布上“打”了一个3/4透明的孔后显示出来

添加

style="background:black;"
到标签解决了这个问题


[gman在下面的评论是一个更好的修正]

您也可以使用canvas.getContext(“实验性webgl”,{alpha:false})创建无alpha的画布;还可以使用canvas.getContext(“实验性webgl”{alpha:false})创建无alpha的画布;
result = {foreground}*sourceAlpha + {background}*(1-sourceAlpha)
       = (0,0,0,.5)*.5 + (0,0,0,1)*.5
       = (0,0,0,.75)
style="background:black;"