アルファ チャネルを持つテクスチャをレンダリングすると、透明でない部分の周りに白い境界線が表示されます (境界線は、アルファ > 0 および < 1 を持つピクセルのように見えます)。
元のテクスチャは illustrator で作成され、png としてエクスポートされます。ここにあります:
(まあ、stackoverflowが完全に不透明/透明ではないピクセルを調整して画像を変更したようですので、ここにリンクがあります)
セットアップの何が問題なのかわかりませんが、おそらくブレンディングです。
gl.enable(gl.BLEND);
gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_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ページの本体が白の場合に効果が発生します。説明はありませんが。