首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Webgl精灵渲染,α混合白色边缘

Webgl精灵渲染,α混合白色边缘
EN

Stack Overflow用户
提问于 2022-09-21 11:13:36
回答 1查看 65关注 0票数 3

我有一个带有alpha通道的精灵(第一个图像,它有纹理填充,以防止纹理出血,这就是为什么它“更厚”)。第二张图片是我渲染精灵时所看到的。奇怪的是α混合工作,因为圆圈内的浅蓝色是α蓝色,我看到它在工作。而橙色部分的边缘也有阿尔法颜色(因为抗混叠)。

但是蓝色圆圈周围的白色边缘怎么可能呢?蓝色圆圈有阿尔法,我看到它起作用了。我无法理解阿尔法混合是否有效(对于阿尔法蓝色像素),蓝色圆圈周围的白色边缘是怎么可能的(那是阿尔法橙色像素)?

我怎样才能避免在雪碧的蓝色圆圈周围呈现白色的边缘呢?

代码语言:javascript
复制
gl.enable(gl.BLEND);
gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);

如果我把雪碧呈现给HTML画布,就像预期的那样,有alpha混合,圆圈周围没有白色的边缘。

附加的图像没有alpha通道,但它在我的应用程序中。

EN

回答 1

Stack Overflow用户

发布于 2022-09-21 12:49:07

我找到了解决办法..。如果我没有在getContext关掉alpha,alpha就不能正常工作。

代码语言:javascript
复制
    const gl = canvas.getContext("webgl2", {
        alpha: false,
    });

然后,我意识到这种方法只适用于最近的纹理滤波,也适用于线性滤波和MIPMAP,您也需要:

代码语言:javascript
复制
gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, true);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73799791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档