繁体   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