Viendo que estaba usando Game maker, supongo que está en Windows, así que salte al fondo con el SDK de direct-x. Los ejemplos proporcionan el código fuente y también le dan una idea de la potencia disponible para usted. El hecho de que quieras hacer un juego en 2D no significa que debas seguir con una biblioteca en 2D, en algún momento probablemente quieras hacer algo que la biblioteca no implemente en sí misma (sombreadores o rotaciones o algo aleatorio que simplemente NECESIDAD para su proyecto).
SDL, y probablemente SFML y Cinder, proporcionan un enfoque de alto nivel para "ser lo básico" para ser un motor, por lo que tendría todo el poder de hacerlo desde cero (por lo que podría tener sombreadores de píxeles en SDL), pero no aprenderías cómo se hicieron las cosas. Luego estarías haciendo C ++ real dentro de un marco auxiliar, lo que ayudará a hacer las cosas, pero no será una gran ayuda para enseñarte cómo desarrollar juegos si alguna vez vas a trabajar en una empresa de desarrollo de juegos.
SDL, SFML e incluso Cinder son formas inteligentes de evitar aprender sobre las cosas difíciles en C ++. Normalmente envuelven OpenGL, lo cual es útil para aprender si desea codificar gráficos para máquinas que no son de Windows, pero también hay toneladas de recursos para realizar el trabajo en Direct-X (probablemente más, ya que el virus de Windows se ha extendido a todos los rincones del mundo).
Si no quieres aprender cosas arenosas, entonces está bien, pero de lo contrario, no tengas miedo de comenzar desde una aplicación Win32 sin procesar.
Te sugiero que, para tu comodidad, comiences con todos los diferentes paquetes de ayuda que puedas encontrar, pero dirígete a escribir tu propio motor de renderizado. Escribir un motor es muy divertido y puede proporcionarle un recurso para mirar hacia atrás en sus proyectos futuros. Nada crea un buen código como la sabiduría de hacerlo mal en el pasado.