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