I'm trying to get some particles to work properly - they should blend among themselves but not with the background color. For this I'm using additive blending, textures with premultipled alpha and set the color as (r*a, g*a, b*a, 0) on textures I want to add up. I'm using the blend mode: glBlendFunc(GL11.GL_ONE, GL_ONE_MINUS_SRC_ALPHA); for everything.
I found out that what I want to do can be achieved by rendering and additively blending the particles in a framebuffer and then render that framebuffer on top of the background with standard alpha blending. In theory I think this should work..however i'm still getting the same result as I did before which is very bright particles at bright areas of the background.
So what I'm doing is simply: 1)Render the background as usual with color (r*a,g*a,b*a,a)
2)Bind my fbo
3)Use GL11.glClear(GL11.GL_COLOR_BUFFER_BIT); GL11.glClearColor(0f, 0f, 0f, 0.0f);
4)Render all the particles with color as (r*a,g*a,b*a,0)
5)Unbind the fbo and render it on top of the bg with (1,1,1,1) color.
Why doesn't this work?