Вывод двухмерной графики в Direct3D
Для того, чтобы вывести двухмерную картинку на экран в Direct3D необходимо просто вывести полигоны в экранных кординатах. Этого можно добится несколькими способами:
Первый — установить ортогональную матрицу проекции. Однако, в этом случае производится, фактически, лишнее матричное преобразование, так как вершины спрайта можно указывать уже в экранных кординатах.
Второй — использовать, так называемые, преобразованные и освещенные вершины. Для этого формат вершины (FlexibleVertexFormat) должен содержать флаг D3DFVF_XYZRHW, означающий что вершина уже преобразована и не требует обработки со стороны Direct3D или видео-подсистемы. Этот способ более предпочтителен, так как вершины вообще не обрабатываются а идут сразу на растеризацию. Однако что если мы хотим использовать другой формат вершин? Допустим, мы хотим использовать один формат вершин как для преобразуемых, так и для не преобразуемых объектов (ведь как известно использование различных форматов вершин может снизить производительность, так как видео-подсистеме необходимо переключать свои внутренние состояния при смене формата вершин). В этом случае следует использовать третий способ.
Третий способ — указать «пустой» вершинный шейдер. Вершины будут отправляться на растеризацию без предварительной обработки.
Если при выводе двухмерной графики вам не нужен буфер глубины, то не забудьте его отключить.
Источник: http://www.gamedev.ru