簡體   English   中英

顏色在OpenGL ES中無法正確混合

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM