netlib.narod.ru | < Назад | Оглавление | Далее > |
Интерфейс Direct3DRMMeshBuilder — это высокоуровневый, удобный инструмент для манипуляций с сетками, предоставляющий 38 функций для создания и модификации сеток. Конструктор сеток, как следует из его названия, создает сетки, но сам сеткой не является. Однако, конструктор сеток может использоваться как удобная замена сетки и добавляться в сцену в качестве визуального элемента. Когда конструкторы сеток добавляются в сцену, они создают и используют внутреннюю сетку. Чтобы создать конструктор сеток, воспользуйтесь функцией CreateMeshBuilder() интерфейса Direct3DRM, как показано ниже.
LPDIRECT3DRMMESHBUILDER meshbuilder; d3drm->CreateMeshBuilder(&meshbuilder);
Функция Load() позволяет объектам конструктора сеток загружать сетки с диска, из ресурсов программы либо из памяти. Кроме того, функция Load() загружает любые назначенные сетке текстуры, если местоположение текстур указано в путях поиска Direct3D.
Функция Load() дает возможность выполнять функцию обратного вызова каждый раз при загрузке текстуры. Это позволяет изменять заданную по умолчанию загрузку текстуры и получать текстуры из заданных каталогов или из ресурсов программы.
Функция конструктора сеток Save() позволяет сохранить сетку как текстовый, двоичный или сжатый файл.
Конструктор сеток позволяет манипулировать различными прааметрами отображения сеток, такими как цвет, текстуры и режим визуализации. Для этого используются следующие функции:
Функции SetColor() и SetColorRGB() применяются для назначения цветов граням сеток. Функция GetColor() отсутствует, поскольку нет никакой гарантии, что все грани сетки будут иметь один и тот же цвет.
Функции GetQuality() и SetQuality() применяются для установки режима визуализации сетки (каркасный, равномерная закраска, метод Гуро и т.д.). Однако, имеется одно ограничение: Direct3D изменит режим визуализации конструктора сеток, если параметры устройства, на котором сетка будут отображаться, настроены на более простой режим визуализации. Например, если параметры устройства настроены на использование каркасного режима, все конструкторы сеток, использующие равномерную закраску или метод Гуро, будут отображаться в каркасном режиме.
Функция SetTexture() назначает конструктору сеток указанную текстуру. С помощью функций GetTextureCoordinates(), SetTextureCoordinates() и SetTextureTopology() задаются атрибуты текстуры. Обычно вместо этих функций предпочтительнее использовать наложение текстуры, обсуждаемое далее в этой главе.
Функции GetPerspective() и SetPerspective() применяются для включения и отключения перспективной коррекции текстур. Перспективная коррекция текстур гарантирует, что текстуры корректно отображаются в соответствии с местоположением и ориентацией зрителя, но требует дополнительных вычислений. В общем случае коррекция перспективы необходима для текстур, наносимых на большие грани расположенные близко к зрителю. Для удаленных от зрителя сеток коррекция может быть отключена. Если во время анимации текстуры начинают скользить и перемещаться по граням сетки — настало время включить перспективную коррекцию.
Интерфейс конструктора сеток позволяет также модифицировать и добавлять грани. Например, список созданных конструктором сеток граней может быть получен с помощью функции GetFaces(). Для получения количества граней в сетке применяется функция GetFaceCount(). Чтобы создать и добавить грани вызываются функции CreateFace(), AddFace() и AddFaces().
Конструктор сеток обеспечивает доступ к вершинам сетки. Число вершин сетки может быть получено с помощью функции GetVertexCount(). Данные вершин могут быть получены или установлены посредством функций GetVertices() и SetVertices(). Возможность доступа к вершинам сетки открывает большие возможности изменения конфигурации сетки с помощью указанных функций.
Местоположение объектов определяется фреймами, но можно определить расположение сетки относительно присоединенного фрейма. Функция конструктора сеток Translate() позволяет задать смещение местоположения сетки. Благодаря этому можно присоединить к одному фрейму несколько сеток так, чтобы они не занимали одно и то же пространство.
Функция Scale() задает набор коэффициентов масштабирования для сетки. Масштабирование осуществляется в локальной системе координат сетки, как если бы центр сетки находился в начале координат. Можно задавать различные коэффициенты масштабирования для каждой из осей, чтобы сетка растягивалась и сжималась.
Благодаря предоставляемым мощности и простоте использования интерфейса Direct3DRMMeshBuilder, конструкторы сеток являются оптимальным выбором для большинства задач. Однако в некоторых ситуациях применение интерфейса конструктора сеток может привести к снижению производительности. Если вы используете конструктор сетки для загрузки данных, настройки параметров и размещения полученной сетки в сцене, не предусматривающей частого изменения параметров, применение интерфейса конструктора сеток будет оптимальным вариантом. Однако, если параметры сетки (цвет, текстуры, позиции вершин и т.д.) будут часто изменяться во время выполнения, конструктор сеток снизит производительность вашего приложения. Чуть позже мы обсудим альтернативные варианты работы с сетками.
netlib.narod.ru | < Назад | Оглавление | Далее > |