   GDI is it worth learning
  Ive been working with GDI recently on win32 and am starting to get the hang of it, well enough to make a simple tetris/pacman clone. But is it really worth learning or should I use DirectX or OpenGL for the graphics instead? I've tried SDL hear and there and I'm not interested in it at the moment, so let's not go there :D.   
  It's worth learning it but it's more useful for making applications. For games, I would use a 3D API like D3D or GL.   ;  Hi namingway,I learnt a little GDI too about 3 years ago now.  I was creating a physics simulation and needed to visualise some interactions.  My opinion would be that although it's very quick to get something up and running with it the techinical limitations stop you doing anything too amazing, I would say it simply wasn't designed for heavy graphics work.Please take this opinion with a pinch of salt as I'm certainly no expert at using it so all my concerns are probably addressed.Going forward GDI isn't going to be so helpful.  You could learn the latest style in .NET 3.0 etc although I think you'd be best learning OpenGL or DirectX.  Both of these graphics APIs have all the 2D functionality you'll ever need, some things will be easier, others slightly harder.On SDL, although you said let's not go there, I guess you're talking about the various APIs it provides.  Personally I use SDL for all the other stuff (windows, input etc) so I don't have to worry about it but then build my graphics with OpenGL.  There's probably only 100-150 lines of SDL code and that's the same in every project.  I've done all the windowing/input with the Win32 API before and if you can skip I think you should.;  I guess I'll finish up my game in GDI and then based on its performance, convert its drawing functions to either openGL or DirectX.   ;  Sounds like a very good idea!You'll find that 80% of it should port quite directly by changing a few command names and 20% will be different.  Things such as invalidating parts of the canvas aren't needed whereas other code will be needed for set-up, switching buffers etc.   