2012-08-05 82 views
1

我想在2D中在OpenGL ES中呈現2(光)圓。中間是白色的,邊框是黑色的。它工作正常,只要它們不重疊:顏色在OpenGL ES中不能正確混合

enter image description here

但是一旦他們這樣做,我得到這個神器:

enter image description here

我使用glBlendFunc(GL_ONE, GL_ONE)與混合當然啓用。

這可能是什麼原因造成的?有沒有辦法解決它?

我希望他們融入更多像這樣的:

enter image description here

謝謝!

回答

1

您的圈子目前是線性漸變嗎?如果你有不同的曲線,你可能會得到更少的神器。

但是,根據你的例子,它看起來像你想要兩個圓的最大強度,而不是強度的總和。看來Apple的OpenGL ES 2.0實現支持EXT_blend_minmax擴展,它允許您指定生成的片段值應該是入站值和現有值的最大值。也許試試?

+0

是的,我正在使用線性漸變。我會嘗試不同的。 – DrummerB 2012-08-05 17:12:17

+0

@DrummerB我又增加了一個建議;結果是最大可能的,至少有一個擴展。 – 2012-08-05 17:27:50

0

您看到的結果正是線性漸變的結果。提示:打開Photoshop或GIMP將兩個徑向漸變繪製成兩個圖層,並將它們設置爲「加法」混合模式。它看起來完全像你的照片。

像你想要的效果是用平方梯度給出的。如果您的漸變在0 ... 1範圍內,則取該值的平方並繪製該圖像。如果想要線性化單梯度,則可以稍後應用sqrt。

這不是說這是使用混合階段不容易完成的事情;它可以使用多次通過完成,但是實際上使用着色器結合從兩個FBO傳遞來更直接。