I would suggest to create a graphic functions unit for your project, where you will define all the graphics functions & structures that you will need:

- Initialize window/video mode function
- LoadImage function
- RenderImage(x,y)
- and so on ...

Is it important that you only use the functions & structures of this unit to make all the graphics operations of your game.

Then, you will be able to code your game using this "abstract" layer. You can first create the Graphics32 implementation of the unit, and if you want to create an OpenGL renderer you will have to write specific versions of the functions only - no impact on your game.

About input handling, it may mostly rely on the libraries you plan to use - Win32, SDL, VCL manage events in their own way.

Dunno if this is what you're looking for, but here's a tutorial about ortho projection in OpenGL : http://gpwiki.org/index.php/OpenGL:T...rtho_and_Alpha (sorry it's in C, but it's the same in Pascal).