Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ВВЕДЕНИЕ new.docx
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
376.73 Кб
Скачать

1 Постановка задачи

Разработать компьютерный вариант классической игры «Шахматы» для операционных систем семейства Windows, используя пакет средств компьютерной графики DirectX.

К реализации предъявляются следующие требования:

  1. Трехмерное представление игрового мира.

  2. Свободное управление игровой камерой.

    1. Выбор логических структур для хранения данных

Любое графическое приложение требует повышенную

производительность компьютера, поэтому первоочередная задача для проектировщиков – оптимизация программного кода. Под оптимизацией понимается ручное управление памятью и использование наименее ресурсоемких структур с наибольшим быстродействием.

Для реализации поставленной задачи можно было использовать либо контейнеры из библиотеки стандартных шаблонов (в частности, vector), либо массивы данных. Выбор был сделан в пользу второго варианта, по той причине, что vector обладает следующими недостатками:

  1. Возврат значения посредством оператора [] (vector::operator[]) занимает в среднем около 900 мс, в то время как возврат значения из массива происходит без задержки.

  2. Так как vector является классом, то при создании его экземпляра вызывается конструктор, в котором происходит резервирование памяти для быстрой вставки элементов, что занимает ровно 56 мс. Выделение же памяти на стеке для массива выполняется меньше, чем за 3 мс.

  3. Большинство функций пакета DirectX работает с непрерывными массивами данных.

2 Выбор среды разработки

Для реализации приложения был выбран бесплатный пакет средств компьютерной графики DirectX. Язык разработки – C++.

DirectX представляет собой набор из нескольких API (application programming interface – интерфейс программирования приложений), позволяющих разработчикам игр получать доступ к специфическим функциям аппаратного обеспечения, без необходимости написания аппаратно-зависимого программного кода. DirectX основан на наборе COM (Component Object Model – компонентная модель объектов) классов, которые представляют собой спецификацию интерфейса, в котором функции вызываются через указатели.

DirectX включает в себя следующие API:

  1. DirectDraw – обеспечивает доступ к аппаратным средствам, отвечающих за изображение. Предлагается возможность работать с двумерной графикой и напрямую управлять видеопамятью.

  2. DirectSound – обеспечивает аппартнонезависимый интерфейс воспроизведения звука.

  3. DirectInput – обеспечивает аппаратнонезависимый ввод данных в систему в режиме реального времени. События, обрабатываемые DirectInput, формируются клавиатурой, мышкой и джойстиком.

  4. DirectPlay – представляет собой независимый протокол для осуществления связи между компьютерами. Может применяться для многопользовательских игр, связь в которых осуществляется через Интернет.

  5. Direct3D – подсистема создания трехмерных графических изображений.

Остановимся на Direct3D, как на основном инструменте реализации приложения. Несомненными его достоинствами являются независимость от устройств, общая модель драйверов (гарантирующая поддержку минимального набора средств и возможностей), простота включения в приложения функций трехмерной графики. Созданные с помощью Direct3D прикладные системы могут работать на разных аппаратных платформах, поскольку все средства Direct3D реализуются «поверх» HAL (Hadrware Abstraction Layer – Слой аппаратных абстракций).

Одним из наиболее важных качеств Direct3D является прозрачный доступ к графическим ускорителям. Если аппаратная платформа не поддерживает какой-то функции, Direct3D реализует ее эквивалент программным путем. В процессе своего исполнения приложение может определять наличие аппаратных компонентов и использовать их возможности. Кроме того, Direct3D реализует быстрый программно выполняемый рендеринг, для чего применяется полный конвейер рендеринга 3D графики. При наличии соответствующей аппаратной поддержки часть операций такого рода осуществляется аппаратурой компьютера.

Механизм рендеринга Direct3D реализуется с помощью трех модулей: трансформации, освещенности и растеризации. Выполняемые каждым из них операции можно ускорить аппаратными средствами, причем такое ускорение осуществляется прозрачно для пользователей приложения. Разработчику лишь нужно предусмотреть в приложении функции опознавания соответствующих аппаратных компонентов.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]