Существует множество различных решений проблемы абстрагирования, и каждый из них решает ее по-своему.
Мой текущий проект использует C #, DirectX 9, HLSL и SlimDX. Каждый из них предлагает тщательно откалиброванный уровень абстракции. HLSL позволяет мне фактически читать код шейдера, который я пишу, а SlimDX / C # позволяет мне игнорировать указатели, циклические зависимости и обработку неуправляемого кода.
Тем не менее, ни одна из этих технологий не влияет на простоту разработки моего ИИ, освещения или физики! Мне все еще приходится разбирать свои учебники так, как если бы я не пользовался инфраструктурой более высокого уровня.
Даже при использовании фреймворка, такого как XNA, если большинство концепций разработки видеоигр чужды вам, то чертовски многое еще предстоит освоить и изучить. XNA позволит вам аккуратно обходить блокировку карданного подвеса, но горе тем, кто не понимает базовых концепций затенения. С другой стороны, что-то вроде DarkBASIC не решит вашу проблему с блокировкой карданного подвеса, но затенение в основном выполняется для вас.
Это достаточно большое поле, и ваш первый движок никогда не будет тем, который вы на самом деле используете. Если ты пишешь это сам, ты не будешь писать это достаточно хорошо. Если вы используете сторонние библиотеки, то, несомненно, вас это раздражает, и вы захотите заменить.
В качестве идеи, возможно, стоит взять различные библиотеки / фреймворки (определенно сделайте XNA одной из ваших остановок, даже если вы решите, что вы не хотите его использовать, это отличный тест) и попытайтесь создать различные прототипы. Возможно, пейзаж (с водоемом) или демонстрация космической физики.