粒子效果的混合

所以我已经启动了我的粒子系统,只要背景是黑暗的,它看起来很棒。 我的问题是我需要在浅色背景上渲染效果。 我一直在尝试很多不同的设置glBlendFunc,但无法弄清楚如何让它工作。 我目前的混合是glBlendFunc(GL_SRC_ALPHA,GL_ONE),你可以在下面的图片中选择不那么令人满意的结果。 如何在浅色背景上渲染效果?

问题的插图http://babelstudios.se/stackoverflow/blended-particle-effect.png


如果你有一个正常的alpha纹理纹理,并且你正在以前后顺序渲染,这是要走的路:

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)

如果您的纹理预乘alpha,并且按照从前到前的顺序进行渲染,请改为:

glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA)

从opengl.org

您可能想要使用混合函数中纹理映射产生的alpha值。 如果是这样,(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA)始终是一个很好的功能。

但是,如果希望在基元被纹理映射时发生混合(即,希望纹理映射的某些部分允许基元的基础颜色显示),则不要使用OpenGL混合。 相反,您可以使用glTexEnv(),并将纹理环境模式设置为GL_BLEND。 在这种情况下,您希望将纹理环境颜色保留为默认值(0,0,0,0)。

链接地址: http://www.djcxy.com/p/31827.html

上一篇: blending of particle effect

下一篇: MS SQL query to calculate average monthly unique visitors