Этапы Direct3D 11
Direct3D – это больше, чем просто API. Это инструмент преобразования геометрических фигур и изображении в игры. Всё это с учётом того, что много компонентов DirectX предоставляются как «чёрный ящик», о внутреннем устройстве которого не стоит беспокоится.
Обработка информации DirectX производится в несколько этапов, каждый из которых предоставляет проект на определённом уровне обработки. Каждый из этих этапов известен как конвейер виртуализации (рис. 1.2).
Рисунок 1.2
Этапы Direct3D 11.
Первый этап конвейера Direct3D называется «Сборщик входных данных» (англ. Input Assembler) IA, его можно рассматривать как составления блока. На этой стадии мы устанавливаем геометрию, которую будем использовать на ряду с необходимой информацией, Direct3D необходимо выполнить эту задачу.
Второй этап – Vertex Shader. Вершина – это одна из точек, составляющих фигуру. Шейдеры будут обсуждаться на протяжении всей этой книги.
Третий, четвёртый и пятый этапы занимаются тессиляцией. Тесселяция – это сложная тема, использующая два новых шейдера Direct3D, а именно «Халл» (ориг. Hull) и домены шейдеров (ориг. Domain shaders). Аппаратная тесселяция является по сути процессом принятия входной геометрии и уменьшения/увеличения уровня её детализации. Это позволяет обрабатывать высоко полигональные модели. Обработка моделей выполняется частями, например берётся большой треугольник и разбивается на более мелкие части.
Шейдер Халл занимается принятием входных данных и накладывает текстуры, работа происходит по контрольным точкам, а данные подаются так называемыми патчами. Этап тесссиляция принимает эти данные и передаёт их оборудованию. Шейдер вершин занимается генерацией вершин подразделяющихся на точки.
Шестой этап – Шейдер геометрии (ориг. Geometry Shader). Если нет этапа тессиляции, этот этап наступает уже после Шейдера вершин. Геометрический шейдер работает со всей фигурой, в то время как Шейдер вершин лишь с определённо её частью. Шейдер геометрии может по сути создавать или уничтожать объекты, что во многом зависит от эффектов, которые вы пытаетесь создать. Одним из ярких примеров работы данного шейдера, является затенение геометрической модели, создавая так называемый теневой объём.
Задача седьмого этапа, состоит в определении того, какие пиксели видны через отсечения и забои геометрии (мы рассмотрим это подробнее в главе 6). Также происходит настройка пиксельных шейдеров и их вызов.
Восьмой этап – пиксельное построение текстуры. На этой стадии пиксельный шейдер получает геометрические данные от всех прошлых этапов, которые используются для построения текстур. Если тесселяция либо геометрический шейдер не использовался – построение текстур происходит непосредственно по вершинам. Эта тема будет раскрыта более детально в следующей главе.
Заключительный этан. Здесь происходит слияние всей выполненной работы в единый проект. Все данные обрабатываются и на выходе мы получаем изображение, которое должно быть на экране.
Соображения по поводу Direct3D 11
Некоторые из вас уже могут быть знакомы с написанием игр на DirectX, если так, вам нужно быть в курсе последних изменений в сфере DirectX. Работа по преобразованию игр из DirectX 10 в DirectX 11 довольно простой процесс. DirectX 11, это по сути расширенная версия DirectX 10 (10.1), поэтому всё относительно просто. Вот переход от DirectX 9 до DirectX 11 это уже совсем другая история.
Когда переходят от DirectX 9 до DirectX 11, самым ощутим изменением становится отсутствие трубопровода. Раньше можно было выбрать один из способов обработки Ваших 3D сцен и Direct3D сам выполнял нужную работу. Сегодня с D3D10 и D3D11, всё это работает программно через конвейер. Глава 7 Вам об этом и расскажет и Вы поймёте, что происходит в Direct3D 11. На протяжении всей книги мы будем пользоваться шейдерами, прежде чем начнём их детально обсудим в главе 7.
Одним из наиболее крупных изменений является удаление битовой шапки. В прошлых версиях DirectX Вам нужно было проверить оборудование, чтобы убедится, что определённые функции (пиксельные шейдеры скажем) доступны для использования. Сегодня же, всё выполняется программным обеспечением автоматически, тем самым гарантируя Вам постоянную поддержку всех используемых функций. Это значительно упрощает код инициализации игры на DirectX10. Предположим DirectX 10 и 11 совместимы аппаратно (сегодня).
DirectX 9 имеет совершенно другой API интерфейс, поэтому также просто менять игру с DirectX 9 до 11, как с 10 до 11 не получится. Здесь легче заново написать визуализацию для игры чем переделывать существующее.
Инструменты DirectX
DirectX SDK содержит огромное количество различно информации и инструментов по связным разделам. Сам SDK следует изучить всем разработчикам, использующих DirectX, ибо он имеет чрезвычайно хорошо документированную базу и развитые инструменты, которые помогают в обучении разработки на DirectX. Сейчас мы кратко пробежим по основным инструментам DirectX SDK.
Дата добавления: 2015-01-18 | Просмотры: 899 | Нарушение авторских прав
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
|