I'm working on a game in a 3D world with elements 2D only (Like Don't starve game) for Android and IOS.
Currently, I've managed "Sprite" without alpha blending, I've just put a condition in the pixel shader to test if pixel alpha channel is null:
if ( texture.a < 0.5 ) discard;
Everything working here. (On old devies like an HTC desire mobile, this condition destroy framerate but it's another problem :/)
But recently, I've tried to had another Sprite with AlphaBlending activated:
glCheck( glEnable(GL_BLEND) ); glCheck( glBlendFunc( GL_ONE, GL_ONE_MINUS_SRC_ALPHA ) ); glCheck( glDisable(GL_DEPTH_TEST) );
My sprite transparency is ok but it is now in front of everything in the scene. (Probably due to glDisable(GL_DEPTH_TEST)).
How can I handle depth with alpha blending activated?
EDIT: A video to show the problem: http://www.youtube.com/watch?v=W0gpBekEwW8&feature=youtu.be