te recomiendo algo... la programación de videojuegos no la hagas desde 0... inventar el agua tibia no te hace más profesional...
a menos que
realmente (y por realmente realmente me refiero a
realmente) estés
muy bien con c++ al punto que te digan "puedes hacer un sistema operativo" y respondas "si, me tomará unas semanas pero no hay problemas" entonces no intentes empezar desde 0...
por qué?
primero: diseñar el motor grafico... es decir diseñar una base que pueda mostrar todos los graficos en pantalla de forma optima, un motor de manejo de objetos 3d desde formatos de archivo y transformaciones de matrices a diestra y siniestra, ya que openGL es un menjador de graficos de pantalla y realmente es 2d(como tu pantalla), tu tienes que hacer una buena parte de las cosas para que se via 3d
segundo: diseñar los handler de captura de teclado y mouse... lo más simple, aún así no dejan de ser un par de miles de lineas de código
tercero: diseñar los handler de elementos graficos... se tienen que mover, interactuar, saber si se tocan, etc...
y de ahí no he toca aún sonido, captura de animaciones, lectura de archivos, inserciones... y apenas con eso estamos terminando el motor del juego... luego viene sobre eso el juego...
por eso los estudios gastan millones de $$ creando motores de juego para hacer sus juegos sobre ellos...
lo más cercano que he visto a un motor de bajo nivel para c++ es
Angel Engine y ellos mismos aclaranque aunque es posible crear un juego, no lo recomiendan más que para practicar...
para hacer un buen juego profesional, tienes unity, cryengine, udk, entre otros... son motores de juego bien diseñados, corregidos y completos, que hacen todo lo que indiqué arriba y más... y ya habrás visto tu los juegos creados solo en ellos 3...