Опубликован: 22.12.2012 | Доступ: свободный | Студентов: 424 / 14 | Длительность: 07:20:00
Лекция 12:

Разработка графических подсистем. Структура графической подсистемы. Элементы реализации. DirectX

< Лекция 11 || Лекция 12 || Лекция 13 >
Аннотация: В лекции приводится процесс создания проекта для Windows Store. Рассматривается разработка графических подсистем . Разбирается учебный пример Direct3D. В этом примере приводится фрагмент кода, который можно включать в приложение.

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

  1. Установите Visual Studio Express 2012 RC для Windows 8.
  2. Выберите пункт меню File (Файл) > New Project (Новый проект). Откроется диалоговое окно New Project (Создание проекта).
  3. На панели Installed (Установлено) разверните узел Visual C++.
  4. Выберите тип шаблона Windows Metro style (Для Windows Store для Windows).
  5. На центральной панели выберите Direct3D Application (Приложение Direct3D).
  6. Введите имя проекта. В этом примере мы назовем проект MyDirectXApp.
     В Visual Studio Express 2012 RC для Windows 8 создается новый проект

    Рис. 11.1. В Visual Studio Express 2012 RC для Windows 8 создается новый проект
  7. Нажмите кнопку OK. Файлы вашего проекта созданы.
  8. Чтобы запустить приложение, выберите пункт меню Debug (Отладка) > Start Debugging (Начать отладку) или нажмите клавишу F5. Вы увидите пустое окно, которое будет занимать весь экран.

Когда вы создаете проект, пакет Visual Studio создает файлы проекта и показывает их на панели Solution Explorer (Обозреватель решений).


Рис. 11.2.

Рассмотрим файлы, созданные пустым приложением.

Таблица 11.1.
Имя файла Описание файла
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 при разработке приложений на языке С++.

Вопросы

  1. Какие действия необходимо выполнить для создания нового проекта приложения Direct3D для Windows Store?
  2. Что показано на панели Solution Explorer, когда вы создаете проект?
  3. Какие файлы создаются пустым приложением?
  4. Приведите примеры доступных файлов при создании проекта приложения Direct3D для Windows Store.
< Лекция 11 || Лекция 12 || Лекция 13 >
Максим Иванов
Максим Иванов
а, ВЭГУ
Василий Вячин
Василий Вячин
Россия, Москва, НПО Информ-Система, Специалист-разработчик