... Draw all non-transparent objects ... glEnable(GL_BLEND); // Color Blending glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glDepthMask(false); // do not write on depth buffer ... Sort transparent objects by depth ... ... Draw all transparent objects from furthest to closest ... glDisable(GL_BLEND); // do not forget to re-activate depth buffer write glDepthMask(true);