I'm going to learn game programming. I have the basis of c/c++/c#. I'd like to develop 2D games first and research 3D games later, so which game engine should I choose? There are many many different opensource game engines, so I don't know which is suitable for a beginner. I have learnt some about DirectX, which is not cross-platform, so I may spend more time on OpenGL study. I prefer an opensource game engine whose graphic is based on OpenGL. Give me some suggestions, please. Thanks.