There is an extra method: draw scene in framebuffer twice with depth test enabled and draw a second time with depth test equal. This will be slower but nowhere near the 30 second selection lag reported by some users.