Вы говорите, что у вас есть фон C #, поэтому я предполагаю, что вам удобнее работать с C #, чем с C ++. Кроме того, вы говорите, что знаете C ++, поэтому я предполагаю, что у вас уже есть понимание управления памятью.
Если вы просто хотите учиться и чувствовать себя более комфортно с графическим конвейером, вам следует проверить SlimDX и XNA . Они оба позволяют вам использовать DirectX без необходимости погружаться в C / C ++.
Что касается того, нужно ли сначала изучать теорию или API, я не думаю, что вам следует сначала изучать теорию или API. Имеет смысл изучать их асинхронно. Возьмите книгу по теории, но в то же время возитесь с API.
Я настоятельно рекомендую XNA. Люди обычно говорят, что вам следует придерживаться C ++, если вы хотите разрабатывать игры, но я категорически не согласен. XNA позволит вам изучить больше игровых концепций высокого уровня за меньшее время, чем если бы вы использовали только C ++ и DirectX. Вы сможете сосредоточиться на изучении того, почему вы что-то делаете, а не на том, как управлять памятью. Если в будущем вы решите, что разработка игр является серьезной страстью, то C ++ - это путь. Вы обнаружите, что графический конвейер XNA тесно отражает DirectX 9 и не будет иметь особых проблем при переходе на C ++.
Кроме того, DirectX 9 должен быть достаточно хорош для любого новичка, и он даст вам лучшее понимание того, как и почему все изменилось в 10 и 11. Однако, если вы действительно хотите использовать новейшие технологии, вы можете попробовать SlimDX, который Оболочка C # для DirectX.
С учетом всего вышесказанного, XNA предлагает множество простых для понимания образцов, с которыми вы можете начать играть на их странице образовательного каталога . Также ознакомьтесь с ziggyware (большая коллекция учебных пособий по xna).
Кроме того, есть много блогов, которые вы можете проверить. Многие из них имеют отличные учебники по ним. Вот некоторые из моих голов:
Наконец, вот две графические книги, которые я очень рекомендую (они довольно сложны и прослужат вам долго):
Они не имеют прямого отношения к DirectX, а скорее охватывают теорию, которую должен знать каждый разработчик графики. (от линейной алгебры до наложения текстуры на рендеринг объемной матрицы ...)