I tried glReadPixels(...), but the returnvalues are pretty strange
Can you describe what pretty strange means ?
I use glReadPixels to do picking. You should ensure, that you pick the right buffer (front/back) and this only after the rendering has been finished (e.g. pick from front buffer buffer has been swapped).