I've already worked with all of this on Delphi using DirectX. I did not call DirectX directly, I used DelphiX project for working with it. Works very well and I created a 2D tiles game (I even found a tutorial for it on google) and saw some 3D tutorials.
But this was about a year ago, now I would suggest that you learn OpenGL, since there are components for using it on Lazarus and it is multi-platform. Yes, I would probably suggest GLScene, but I have never worked with OpenGL so I can't say for sure.
I am planning to learn OpenGL in the near future.