Now it works like that:

  • Draw vertices array to framebuffer (framebuffer contents is black color, drawable quads (from vertices array) has white textures with various alpha values)
  • If in same place is drawed two quads who's texture's alpha is 0.5, that place has white quad with 1.0 alpha


How to do so that if the place where I draw a textured quad with 0.5 alpha already has half-opaque white quad, don't add its alpha value to it (leave it white with 0.5 alpha)? And if I draw textured quad with 0.7 alpha on it, change that place's alpha to 0.7. And if I draw textured quad with for example 0.3 alpha on it, ignore it?

So it should look like this:
(number is white color's alpha value)
(where 0.0 it is black and where number is not 0.0, it means that there is drawn white quad with alpha equal to number represented in brackets)

in the beginning my image looks like this:
(0.0)(0.0)(0.0)(0.0)

after drawing this image:
(0.0)(0.0)(0.5)(0.0)

on it I should get:
(0.0)(0.0)(0.5)(0.0)

after drawing this image:
(0.0)(0.0)(0.3)(0.0)

on top of it, it's alpha is ignored because it is smaller than one that already is there and I get:
(0.0)(0.0)(0.5)(0.0)

after drawing this image:
(0.0)(0.0)(0.7)(0.0)

on top of it, I get:
(0.0)(0.0)(0.7)(0.0)