Por mi parte puedo contarte que parte de lo que se lo aprendi solo. Pero este mundo es tan amplio que no es posible abarcar todo. La forma en que he ido avanzando es mediante ejemplos y programas pequeños. Es decir que al inicio me planteaba el reto de programar algun juego, luego no descansaba hasta lograrlo. en el camino de programar (especialmente un juego) se presentan situaciones que debes saber resolver y esto ayuda mucho.
Te recomiendo que empieces a programar juegos por que algunos juegos son algo asi como una montaña por escalar. En el camino iras aprendiendo, y cuando llegues a la cima podras ver todo lo que pasaste por llegar.
Si en algun momento caes pudes consultar aqui mismo.
En cuestion de bibliografia solo puedo recomendarte textos en ingles. Puedes descargarte los 6.0Gb de libros en PDF y otros formatos que hay en FTP: ftp.runnet.ru/BOOKS/





