Разработка графических подсистем. Структура графической подсистемы. Элементы реализации. DirectX
Windows 8 поддерживает широкий спектр аппаратных конфигураций, от энергоэкономичных систем Windows RT до высокопроизводительных игровых настольных систем с несколькими графическими процессорами (GPU). Расширить функционал приложения для Windows Store можно используя DirectX и C++.
Библиотека API Direct3D 11 использует различные категории для описания графических возможностей Direct3D, поддерживаемых на различных графических устройствах. В каждой версии Direct3D предусмотрены не только различные графические возможности (такие как геометрия и мозаичное представление), но и различные подходы к визуализации (например, поддержка дополнительных инструкций и более разнообразных текстур).
Рекомендации по обеспечению поддержки уровней возможностей
Чтобы обеспечить соответствие требованиям наиболее широкого спектра устройств, программа должна работать при минимальной аппаратной конфигурации для Windows 8 (и, следовательно, Windows RT): минимальная версия 9_1 и ОЗУ объемом 1 ГБ. Взяв за основу эту базовую конфигурацию, можное добавлять поддержку более высоких уровней DirectX и использовать преимущества ускоренной обработки и повышенной производительности передового оборудования. Это не только позволит использовать приложение на энергоэкономичных устройствах, но и предоставит пользователям передового оборудования преимущества дополнительной мощности и возможностей их устройств.
Ниже приведены некоторые характеристики оборудования, которые рекомендуется рассмотреть при проектировании приложения в расчете на высокопроизводительные устройства.
- Более широкий выбор текстур (или более высокое качество текстур)
- Более детальные модели и сетки
- Дополнительные уровни MIP
- Расширенные модели шейдров
- Более сложное поведение шейдеров (больше инструкций для каждого шейдера для создания более сложных в вычислительном отношении эффектов)
- Геометрические шейдеры
- Вычислительные шейдеры
- Мозаичное представление
- Дополнительные эффекты шейдеров завершающей обработки и полноэкранные эффекты шейдеров
Так как компоненты системы Windows RT не не требуются для поддержки уровней возможностей DirectX выше 9_1, то приложения DirectX, предназначенные для архитектуры Windows RT, должны быть ориентированы на минимальный уровень 9_1. Это позволит максимально расширить аудиторию приложений. Чтобы создать игру с более сложной визуализацией, необходимо использовать используйте уровень не ниже 10_0 для поддерживающих устройств.
При тестировании игры можно принудительно настроить в системе с оборудованием высокого уровня эмуляцию более низкого уровня возможностей с помощью средства dxcpl.exe, которое входит в Microsoft Visual Studio 2012. Например, при помощи dxcpl.exe можно задать для устройства уровня 11_1 принудительную эмуляцию устройства уровня 9_1. Если планируется поддержка устройств Windows RT или платформ с более низким уровнем возможностей, включите это средство в процесс тестирования.
В настоящее время для приложений Direct3D поддерживается только собственный код C++. Visual Studio Express 2012 RC для Windows 8, который включает в себя шаблон для приложений DirectX для Windows Store, который рекомендуется использовать с целью разработки для Direct3D. Шаблон обеспечивает базовую инфраструктуру поставщика представлений и поддержку оконного интерфейса, а также предоставляет ссылки на все необходимые заголовки и компоненты.
Создание нового проекта приложения Direct3D для Windows Store
- Установите Visual Studio Express 2012 RC для Windows 8.
- Выберите пункт меню File (Файл) > New Project (Новый проект). Откроется диалоговое окно New Project (Создание проекта).
- На панели Installed (Установлено) разверните узел Visual C++.
- Выберите тип шаблона Windows Metro style (Для Windows Store для Windows).
- На центральной панели выберите Direct3D Application (Приложение Direct3D).
- Введите имя проекта. В этом примере мы назовем проект MyDirectXApp.
- Нажмите кнопку OK. Файлы вашего проекта созданы.
- Чтобы запустить приложение, выберите пункт меню Debug (Отладка) > Start Debugging (Начать отладку) или нажмите клавишу F5. Вы увидите пустое окно, которое будет занимать весь экран.
Когда вы создаете проект, пакет Visual Studio создает файлы проекта и показывает их на панели Solution Explorer (Обозреватель решений).
Рассмотрим файлы, созданные пустым приложением.
Имя файла | Описание файла |
---|---|
BasicTimer.h | Предоставляет высокочастотный таймер для вычисления "тактов" циклов обновлений графических приложений и игр. |
Direct3DBase.h/.cpp | Создает интерфейс графических устройств и все ресурсы, зависящие от размера окон. Также предоставляет метод для представления текущего полного буфера в цепи переключений. |
<your project name>.h/.cpp | Исходная кодовая страница приложения. Предоставляет базовый набор поведений для общих событий среды выполнения Windows, включая приостановку и возобновление приложений. Также предоставляет методы для инициализации и обновления основного объекта окна, который отображает визуализированное графическое приложение из цепи переключений Direct3D. |
<your project name>Renderer.h/.cpp | Предоставляет некоторое поведение визуализации по умолчанию для приложения Direct3D, чтобы помочь вам начать работу. |
Package.appxmanifest | Имеет все возможности приложения для Windows Store, а также содержит метаданные, которые требуется настроить для успешного развертывания и публикации приложения. |
pch.h/.cpp | Предоставляет ссылки на программные интерфейсы Direct3D 11.1 и DirectXMath. |
SimplePixelShader.hlsl | Простая реализация построителя текстуры на языке HLSL. Обновите или замените этот файл собственной реализацией построителя текстуры. |
SimpleVertexShader.hlsl | Простая реализация вершинного построителя текстуры на языке HLSL. Обновите или замените этот файл собственной реализацией вершинного построителя текстуры. |
Необязательные этапы подготовки
Если вы не используете предоставляемый шаблон, мы рекомендуем вам ознакомиться с разделом Настройка приложения C++ для Windows Store для отображения представления DirectX, чтобы узнать, как включать DirectX в своем приложении для Windows Store на языке C++.
Кроме того, вы можете загрузить пример кода, который существенно упростит разработку трехмерных приложений, на странице: Учебный пример Direct3D. В этом примере приводится фрагмент кода, который вы можете включить в свое приложение. В нем поддерживаются многие распространенные реакции на события DirectX, используемые при разработке игр. Далее приведен список доступных файлов:
- BasicCamera.cpp - базовая реализация камеры.
- BasicLoader.cpp - диспетчер файлового ввода-вывода для ресурсов (например, текстур).
- BasicReaderWriter.cpp - асинхронный загрузчик ресурсов, который способствует повышению производительности благодаря загрузке активов в фоновом режиме.
- BasicShapes.cpp - набор определенных трехмерных примитивов и их свойств.
- BasicTimer.cpp - таймер высокого разрешения, который вы можете использовать для измерения "тактов" в цикле игры.
- Direct3DBase.cpp - методы установки для создания устройства с поддержкой Direct3D и предоставления связанных ресурсов. В технологии имеется ряд базовых функций для управления средством визуализации и обработки событий окон.
- DirectXBase.cpp - методы установки для создания устройства с поддержкой DirectX и предоставления связанных ресурсов. Здесь также имеются процедуры установки Direct2D и DirectWrite.
- DirectXViewProvider.cpp - минимальный код для создания поставщика представлений в среде выполнения Windows и их просмотра.
- FPSCounter.cpp - наложение для счетчика числа кадров в секунду Direct2D.
- LonLatController.cpp - базовый класс контроллера широты и долготы для навигации по сфере с помощью мыши или сенсорного ввода.
Классы и методы, предоставляемые этим примером кода, продемонстрируют вам удобство использования DirectX благодаря обобщению некоторых базовых задач установки и инфраструктуры, характерных для разработки игр. Это позволит вам сосредоточиться на понимании DirectX и среды выполнения Windows как единого целого.
Примечание
Код в примерах файлов, перечисленных здесь, предоставляется "как есть" без каких-либо гарантий, явно выраженных или подразумеваемых, включая, помимо прочего, подразумеваемые гарантии товарной пригодности и (или) пригодности для использования по назначению.
Краткие итоги
Рассмотрены основные действия по созданию графических подсистем приложений для Windows Store. Приведен пример использования DirectX при разработке приложений на языке С++.
Вопросы
- Какие действия необходимо выполнить для создания нового проекта приложения Direct3D для Windows Store?
- Что показано на панели Solution Explorer, когда вы создаете проект?
- Какие файлы создаются пустым приложением?
- Приведите примеры доступных файлов при создании проекта приложения Direct3D для Windows Store.