【发布时间】:2011-10-11 21:12:52
【问题描述】:
在渲染具有 alpha 通道的纹理时,不透明部分周围会出现白色边框(边框似乎是 alpha > 0 和
原始纹理在 illustrator 中创建并导出为 png。在这里:
(好吧,似乎stackoverflow改变了图像,调整了不完全不透明/透明的像素,所以这里是link)
这可能是混合,虽然我不知道设置有什么问题:
gl.enable(gl.BLEND);
gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);
[更新]
这是一个渲染版本,我在纹理的左侧添加了一个 alpha 渐变(所以它从 0 不透明度变为 1 直到一半)
这个纹理是唯一在这个位置渲染的纹理。它似乎在 a=0.5 附近是最白的。真奇怪。背景只是一种清除的颜色:
gl.clearColor(0.603, 0.76, 0.804, 1.0);
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
// render objects here
深度函数如下所示:
gl.enable(gl.DEPTH_TEST);
gl.depthFunc(gl.LEQUAL);
有什么想法吗?非常感谢。
[更新 2]
回答我自己的问题:当画布的背景颜色或 html 页面的主体为白色时,效果就会出现。不过,我没有解释。
【问题讨论】:
-
用一个 0
-
是的。我更新了帖子。有一个白色区域。白色的数量取决于 alpha。似乎在 0.5 左右是最白的
-
奇怪的是它比纹理和背景都亮!是否启用了照明?
-
我现在知道原因了,虽然很奇怪。当html页面的canvas / body的背景颜色为白色时,效果就会发生!我只是偶然发现的。这怎么可能?
-
只花了两天时间试图追踪这个,果然是HTML背景。 世界你是怎么想出来的!?!?!?无论如何,非常感谢。
标签: graphics opengl-es webgl blending