- •Урок 1. Простейшее приложение DirectX11
- •Инициализация DirectX:InitDevice
- •Отображение сцены:Render
- •Цикл обработки сообщений
- •Очистка объектов:CleanupDevice
- •Цикл обработки сообщений
- •Обзор приложения
- •Дополнение к уроку. Настройка среды разработки
- •Заключение
- •Урок 2. Вывод 3d геометрии на экран в DirectX11
- •Обзор архитектуры для вывода геометрии в DirectX11
- •Инициализация геометрии: InitGeometry
- •Инициализация геометрии – создание вершин: InitGeometry
- •Создание буфера глубины: zBuffer
- •Отображение геометрии: Render
- •Обзор приложения
- •Обзор шейдера для нашего приложения
- •Заключение
- •Урок 3. Математические основы Direct3d
- •Знакомство с базовыми 3d представлениями данных
- •Норма вектора
- •Нормализованный вектор
- •Символические обозначения векторов
- •Преобразования матриц и операции с ними
- •Математические операции с матрицами
- •Единичная матрица
- •Модуль матрицы
- •Нормализованная матрица
- •Матрицы трансформаций
- •Матрицы, используемые в DirectX
- •Заключение
- •Урок 4. Установка матриц трансформаций и камеры в DirectX11
- •Урок 5. Процедурная генерация моделей для DirectX11
- •Процедурная генерация
- •Определение формата исходных данных
- •Обзор приложения
- •Заключение
- •Урок 6. Установка источников освещения DirectX11
- •Урок 7. Текстуры в Direct3d11
- •Урок 8. Загрузка мешей в DirectX11
- •Урок 9. Шейдеры в Direct3d11
- •Урок 10. Различные шейдеры DirectX11
- •Шейдеры
- •Шейдер для эффекта bump
- •Шейдер для эффекта металлической поверхности
- •Использование нескольких шейдеров в приложении
- •Обзор приложения
- •Заключение
Использование нескольких шейдеров в приложении
Как правило, в играх используется сразу несколько шейдеров. Некоторые группы мешей имеют один и тот же шейдер, другие группы мешей имеют другой шейдер и так далее. Всё зависит от количества требуемых эффектов и материалов. Перегружать обилием шейдеров и эффектов ваше приложение тоже не следует, правильной практикой будет подчеркнуть шейдером те части сцены, где они необходимы.
// Установка шейдеров g_pImmediateContext->VSSetShader( g_pVertexShader, NULL, 0 ); g_pImmediateContext->PSSetShader( g_pPixelShader, NULL, 0 ); |
В нашем примере назначение того или иного шейдера происходит при рендере мешей.
Обзор приложения
Приложение для данного урока и исходные тексты приложения и шейдеров вы можете скачать тут. Как всегда, вы можете найти в папке с исходными кодами и само скомпилированное приложение.
В данном приложении, как всегда, при использовании эффектов освещения, в качестве основного объекта был выбран торус, так как эта фигура содержит хороший набор нормалей, соответствующих сложной трехмерной поверхности. Здесь используется два источника освещения, один из них имеет фиксированные координаты. И главное, поверхностям назначены шейдеры, дающие эффекты bump и металлической поверхности.
Заключение
Вот и подошли к завершению наши уроки по DirectX11. Мы не сомневаемся, что данные уроки были и интересными, и очень полезными в практическом смысле. Также радует тот факт, что цикл уроков завершается на такой блестящей в прямом и переносном смысле ноте. Трехмерная графика может давать хороший результат, при правильном подходе к этому вопросу.
