ВИЗУАЛЬНОЕ СОЗДАНИЕ ДВУМЕРНЫХ ТЕКСТУР СРЕДСТВАМИ DIRECTX 9.0C
Авторы: Магдалина С.Н., Карабчевский В.В.
Источник: Комп'ютерний моніторинг та інформаційні технології - Матеріали V науково-технічної конференції студентів, аспірантів та молодих науковців. - Донецьк : ДонНТУ - 2009. - 368 с.: іл.

1. О важности текстур.

С самого своего появления компьютер стал мощным инструментом человечества в решении самых различных задач. Его вычислительные мощности применялись в разных областях человеческой деятельности — статистике, прогнозировании, в работе с базами данных. Однако, появление первых графических приложений заставило людей взглянуть на компьютер иначе — уже не как на улучшенную модель калькулятора, а как на инструмент, с помощью которого можно создать что-то по-настоящему красивое.

С появлением технологии, позволяющей напрямую программировать многие аппаратные части компьютера — технологии DirectX, качество создаваемой графики и ее быстродействие подскочили в несколько раз.
Несмотря на то, что современный игровой рынок заполонили трехмерные игры, качество графики в них в многом определяется качеством текстур, которые «наклеены» на трехмерные объекты. Поэтому при создании трехмерных игр большое внимания уделяется не только трехмерной составляющей графики, но и двумерной — текстурам, которые представляют собой, чаще всего, двумерные изображения.

Двумерные изображения (картинки) нашли очень широкое применение и в Интернете. Нынешний его облик поражает воображение красками и разнообразием — всюду навешаны баннеры, анимация, разнообразные эффекты оформления, делающие каждый сайт неповторимым и выдающимся. Большинство этих элементов также представляют собой двумерные изображения - картинки.


2. Структура системы.

Система Kentus_DX представляет собой систему, написанную в среде Visual Studio 2008 на языке С++ [1] с использованием средств DirectX 9.0C (версия октябрь 2008). Система имеет два конфигурационных файла, в которых задаются настройки интерфейса, а также параметры работы системы, такие как задержка информационного окна, количество окон в системе.

Kentus_DX имеет динамически формируемый интерфейс. Суть его заключается в том, что элементы интерфейса (окна и их содержимое) считывается из внешних файлов с расширением .mnu, по одному файлу на каждое окно. Общее количество окон-файлов задается в конфигурационном файле.
Несмотря на то, что информация об интерфейсе считывается извне, обработчики событий и функции, инициируемые нажатием на элементы управления заложены в систему и изменению не подлежат.


3. Создание текстур.

Создание текстуры в системе выполняется покадрово. Каждый кадр представляет собой текущее состояние текстуры и некоторый набор операций, заданных пользователем, которые при выполнении сформируют текущее изображение для следующего кадра.
Операции заключаются в выполнении определенных действий над управляющими объектами. Управляющие объекты — это объекты, создающиеся пользователем, которые станут его инструментами в формировании результирующего изображения. Управляющие объекты могут быть разных типов — точки, линии — иметь разные параметры — координаты, размер, цвет, отображение на результирующем изображении.

Операции также могут быть различными, в зависимости от того, к какому управляющему объекту они применены. Так, для точки типичной операцией является движение по полотну, при котором он оставляет за собой на текстуре след. Если менять при этом цвет движущейся точки, то на изображении получится градиентная линия. В результате работы будет получено конечное изображение, которое можно сохранить статически. Кроме того, будет известна последовательность операций, с помощью которых изображение построено. С помощью кнопки «Создать код» по этим операциям может быть сгенерирован С++ код, который получит в качестве аргументов указатель на текстуру DirectX 9 [2] и другие параметры и над этой текстурой будет автоматически проделывать действия, описанные в операциях.

Таким образом, система позволяет визуально программировать определенную последовательность действий, впоследствии генерируя по ней готовую С++ функцию для формирования изображения. На рисунке 1 показано изображение, сгенерированное при помощи системы Kentus_DX.

Рисунок 1
Рисунок 1 — Текстура, созданная при помощи системы Kentus_DX.

Литература

[1] Секунов Н.Ю. Самоучитель Visual C++. СПб.: БХВ-Петербург, 2002. — 250 с.: ил.
[2] Станислав Горнаков. DirectX 9: Уроки программирования на С++. СПб.: БХВ — Петербург, 2005. — 400 с.: ил.