[英]Colors not blending properly in OpenGL ES
我正在嘗試在OpenGL ES中以2D渲染2個(淺色)圓。 中間是白色,邊框是黑色。 只要它們不重疊,就可以正常工作:
但是一旦他們這樣做,我就會得到以下結果:
我正在使用glBlendFunc(GL_ONE, GL_ONE)
啟用混合功能。
是什么原因造成的? 有辦法解決嗎?
我希望他們像這樣融合更多:
謝謝!
您的圈子目前是線性漸變嗎? 如果您具有不同的曲線,則可能會減少偽影。
但是,根據您的示例,您似乎想要兩個圓的最大強度,而不是強度的總和。 看來Apple的OpenGL ES 2.0實現支持EXT_blend_minmax擴展,它使您可以指定結果片段值應為入站值和現有值的最大值。 也許嘗試一下?
您看到的結果恰好是線性漸變的結果。 提示:打開Photoshop或GIMP將兩個徑向漸變繪制成兩層並將其設置為“添加”混合模式。 它看起來和您的圖片完全一樣。
正方形漸變會給您像您想要的效果一樣的效果。 如果您的梯度在0…1范圍內,則取該值的平方並繪制。 如果要線性化單個漸變,可以稍后再應用sqrt。
這並不是說使用混合階段不容易做到; 可以使用多次傳遞完成此操作,但是使用着色器組合從兩個FBO傳遞來的傳遞實際上更為簡單。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.