Программирование графики с использованием Direct3D

buy cvv online



Глава 5


    Глава 5. Наложение текстур
    Наложение текстуры на сетку Способы наложения текстуры Декалы Прозрачность Анимация текстур Эта глава первая из шести, описывающих специфические технологии Direct3D. Каждая технология обсуждается...
    Наглядный пример наложения текстур
    Прежде чем начать рассматривать код, давайте поговорим о стоящей перед нами цели. Мы собираемся помещать текстуры на объекты. Одним из возможных способов является наложение текстуры. Наложение тек...
    Наложение текстуры на сетку
    Первое, что нам следует сделать наложить текстуру на объект. Наша стратегия состоит в следующем: возьмем демонстрационную программу, аналогичную проекту, который создает по умолчанию мастер Direct...
    Демонстрационное приложение Jade
    Демонстрационное приложение Jade отображает сетку, имеющую форму букв D3D и накладывает на эту сетку нефритовую текстуру. Сетка анимирована, чтобы зритель мог рассмотреть ее с разных сторон. Окно...
    Класс JadeWin
    Большинство функциональных возможностей приложения Jade реализовано в классе JadeWin. Класс JadeWin наследует базовую функциональность Direct3D от класса RMWin, который был подробно описан в главе...
    Функция JadeWin::CreateScene()
    Код функции CreateScene() приложения Jade приведен в листинге5.1. Листинг 5.1. Функция JadeWin::CreateScene() BOOL JadeWin::CreateScene() { HRESULT r; //------- ФОН -------- scene-SetSceneBackgrou...
    Функция JadeWin::MoveFrame()
    MoveFrame() это функция обратного вызова, управляющая анимацией сетки. Текст функции приведен ниже: void JadeWin::MoveFrame(LPDIRECT3DRMFRAME frame, void*, D3DVALUE) { static int x; static int y;...
    Функции меню Render приложения JadeWin
    Приложение Jade (как и большинство демонстрационных программ на CD-ROM) позволяет во время работы программы изменять метод визуализации сетки. Эту возможность обеспечивают функции OnRenderWirefram...
    Методы наложения текстуры
    Приложение Jade использует плоское наложение текстуры. Direct3D поддерживает еще два способа наложения текстуры: цилиндрический и сферический. Для цилиндрического покрытия текстура изгибается в од...
    Приложение Wraps
    Приложение Wraps отображает три сетки: куб, цилиндр и сферу. На каждую сетку накладывается единственная текстура, но метод наложения текстуры можно изменять. По умолчанию для куба используется пло...
    Класс WrapsWin
    Большая часть функциональных возможностей приложения Wraps реализуется классом WrapsWin. Давайте взглянем на определение этого класса: class WrapsWin : public RMWin { public: WrapsWin(); BOOL Crea...
    Функция WrapsWin::CreateScene()
    Давайте взглянем на код приложения Wraps. Как и все приложения в этой книге, данное приложение использует в качестве базового класс RMWin и добавляет функциональные возможности переопределяя функц...
    Функция WrapsWin::LoadMeshes()
    Функция LoadMeshes() создает три сетки и присоединяет каждую из них к отдельному фрейму. Фреймы располагаются на расстоянии друг от друга и им назначаются одинаковые атрибуты вращения. Текст функц...
    Функция WrapsWin::LoadWrapsTexture()
    Функция LoadWrapsTexture() загружает текстуру, изображенную на рис.5.6 и связывает ее с тремя сетками, загруженными ранее функцией LoadMeshes(). Код функции приведен ниже: BOOL WrapsWin::LoadWraps...
    Функция WrapsWin::OnWrapsReset()
    Вспомните, что перед созданием источника света и порта просмотра функция CreateScene() приложения Wraps вызывает три функции: LoadMeshes(), LoadWrapsTexture() и OnWrapsReset(). Функция OnWrapsRese...
    Функция WrapsWin::ApplyWraps()
    Функция ApplyWraps() отвечает за назначение каждой из сеток правильного типа покрытия текстурой в соответствии со значениями переменных класса WrapsWin. Ниже приведен код функции ApplyWraps(): voi...
    Декалы
    Во всех рассмотренных до данного момента демонстрационных программах текстуры назначались интерфейсу Direct3DRMMeshBuilder, а затем конструктор сеток присоединялся к фрейму функцией AddVisual() ин...
    Приложение Decal
    Поддержка декалов в Direct3D представлена в приложении Decal. Приложение Decal анимирует два декала, перемещая их вокруг сцены. Окно приложения Decal показано на рис.5.7. Рис. 5.7. Приложение Deca...
    Класс DecalWin
    Основная функциональность приложения Decal сосредоточена в классе DecalWin: class DecalWin : public RMWin { public: BOOL CreateScene(); protected: //{{AFX_MSG(DecalWin) //}}AFX_MSG DECLARE_MESSAGE...
    Функция DecalWin::CreateScene()
    В отличие от приложения Wraps, вся функциональность приложения Decal предоставляется функцией CreateScene(). Эта функция создает и настраивает декалы, источник света и порт просмотра. Поскольку ан...
    Прозрачность
    Интерфейс Direct3DRMTexture позволяет вам указать цвет текстуры, который будет восприниматься Direct3D как прозрачный. Сквозь прозрачные участки текстуры можно видеть сетки и текстуры, которые в и...
    Приложение OrbStar
    Приложение OrbStar использует прозрачность текстуры при анимации звезды, помещенной внутри сферы. И сетка звезды, и сетка сферы расположены в начале координат. Сфера масштабируется таким образом,...
    Класс OrbStarWin
    Класс OrbStarWin предоставляет большинство функциональных возможностей приложения OrbStar. Определение класса выглядит следующим образом: class OrbStarWin : public RMWin { public: BOOL CreateScene...
    Функция OrbStarWin::CreateScene()
    Функция CreateScene() приложения OrbStar создает сетку звезды и сетку сферы, текстуру, которая будет наложена на сферу, два источника света и порт просмотра. Код функции CreateScene() приведен в л...
    Функции обратного вызова в приложении OrbStar
    Функция CreateScene() приложения OrbStar устанавливает две функции обратного вызова: одну для фрейма к которому присоединена сетка звезды и другую для фрейма с сеткой сферы. Эти функции периодичес...
    Анимация текстуры
    В этой главе вы узнали, как различными методами накладывать текстуры на сетки. Мы также обсудили декалы и прозрачность текстур. Теперь пришло время поговорить об анимации текстур. Существует два в...
    Приложение TextureDrift
    В приложении TextureDrift используется одна сетка и одна текстура. При каждом обновлении экрана текстура заново накладывается на сетку со слегка измененным значением начала координат, что вызывает...
    Класс TextureDriftWin
    Все возможности приложения TextureDrift реализованы в классе TextureDriftWin. Определение класса выглядит следующим образом: class TextureDriftWin : public RMWin { public: BOOL CreateScene(); stat...
    Функция TextureDriftWin::CreateScene()
    Функция TextureDriftWin::CreateScene() создает одну сетку и одну текстуру. Текстура связывается с сеткой, но наложения текстуры не выполняется. При каждом обновлении экрана функция обратного вызов...
    Функция TextureDriftWin::MoveTexture()
    MoveTexture() это функция обратного вызова, которая при каждом вызове создает и применяет новое наложение текстуры. В самом начале функции должен быть получен интерфейс Direct3DRMMesh, который был...
    Приложение ShowRoom
    В приложении ShowRoom анимация текстуры выполняется путем последовательного наложения на одну и ту же сетку нескольких текстур из массива. Используемая в приложении ShowRoom сетка представляет соб...
    Класс ShowRoomWin
    Функциональность приложения ShowRoom сосредоточена в классе ShowRoomWin. Определение этого класса выглядит следующим образом: class ShowRoomWin : public RMWin { public: BOOL CreateScene(); static...
    Функция ShowRoom::CreateScene()
    Во время конструирования сцены приложения ShowRoom, функция CreateScene() загружает 15 текстур, на каждой из которых изображена машина, повернутая под другим углом. Потом создаются сетка и плоское...
    Функция ShowRoom::UpdateTexture()
    Функция обратного вызова UpdateTexture() отвечает за установку новой текстуры при каждом обновлении экрана. Код функции UpdateTexture() выглядит следующим образом: void ShowRoomWin::UpdateTexture(...
    Заключение
    Приложение ShowRoom завершает наше обсуждение наложения текстур. Как обычно, вам настоятельно рекомендуется поэкспериментировать с демонстрационными программами для этого они и предназначены. Когд...









Начало