2016-11-15 49 views
0

我正在使用JavaScript和webgl開發遊戲引擎,並使用正向渲染技術,爲場景中的每個光源一次傳遞。在WebGL中使用添加劑混合的錯誤

我在第二遍使用加法混合,除了需要使用透明紋理點亮對象時,它工作得很好。在這種情況下,我會看到下圖中可以看到的令人討厭的神器。請記住場景中的對象按z排序(從遠到近),透明對象在不透明對象之後呈現。我正在使用混合函數gl.ONE - gl.ONE,但說實話,我嘗試了幾乎所有可能的組合方式。

任何人都可以給我提示如何解決這個問題?

Blending artifact

+0

ONE - ONE完全沒有混合:'1 - 1 = 0' –

+0

[最短代碼需要重現](http://stackoverflow.com/help/on-topic) – gman

回答

0

我調試我認爲是一個類似的問題。我發現底層頁面顯示alpha的值小於1的像素。即使在禁用了混合或設置了任何混合模式的情況下,我似乎也會得到此信息。調試這種方法的一種方法是更改​​頁面上的背景色並查看它是否更改結果。

如果您爲「alpha」指定true,請檢查您何時創建WebGL上下文。如果是這樣,請嘗試更改爲false。這意味着瀏覽器會將您的畫布視爲完全不透明。