Уровень рендеринга игр обычно является довольно хорошо изолированной / абстрагированной частью всего приложения. Что касается игрового движка, то в каждом кадре вы просто строите список концептуальных объектов (деревьев, персонажей и т. Д.). Если игровой движок выбирает рендеринг определенного объекта, то на уровне рендеринга решать, как на самом деле преобразовать это намерение в вызовы отрисовки DX. Рендеринг DX10 сгенерирует другой набор вызовов отрисовки для слоя DX9, но концептуально они все еще выполняют одно и то же действие - «рендеринг этого дерева».
Рендеринг приятно абстрагируется, потому что вы редко хотите получить какую-либо информацию из слоя рендеринга, после того, как действие 'рендеринг этого дерева' выполнено, игровой движок просто предположит, что рендеринг выглядит правильно. Нет необходимости обрабатывать различные потенциальные результаты от вызовов рендеринга DX9 / DX10, потому что 99,9% информации передается из движка в графическую систему, а возвращаемый 0,1%, вероятно, принимает одинаковую форму между двумя API.
Настройка приложения немного более странная, потому что вы должны спросить систему, поддерживается ли DX10, и в любом случае изящно использовать DX9, но это стандартная плата за настройку приложения (так же, как игра должна выбрать разрешение, частоту обновления, устройство ввода и т. д.).