在做項目的時候,要做一個正片疊低的效果,當做完後發現一個不可思議的效果。圖片邊緣有描邊,如下
最後在webglRender中添加了該屬性後, var renderer = new THREE.WebGLRenderer({premultipliedAlpha: false}) 後完美解決,解決後效果如下
那麼這個屬性到底是幹什麼呢,,下面是我的一些理解:
premultipleliedAlpha 渲染器是否會假定顏色,預乘alpha,默認爲true。
在源代碼WebGLState.js中看到這樣的代碼後,但還是不理解,
setClear: function ( r, g, b, a, premultipliedAlpha ) { if ( premultipliedAlpha === true ) { r *= a; g *= a; b *= a; } color.set( r, g, b, a );經過測試對比,
材質如下
var material = new THREE.MeshBasicMaterial({ color : 0xffffff, transparent:true, opacity : 1 });
當屬性值爲false時的效果如下
當爲true時;效果如下:
(完全白色,看不見)
所以,我明白了,,雖然讓面的原理還不是很懂,但經過正片疊低的算法,黑色會隱藏,白色會顯示,這樣就完美解決黑邊的問題。