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

         

TextureDrift


В приложении TextureDrift используется одна сетка и одна текстура. При каждом обновлении экрана текстура заново накладывается на сетку со слегка измененным значением начала координат, что вызывает эффект скольжения текстуры по сетке. Окно приложения TextureDrift показано на рис. 5.10 (чтобы увидеть анимацию текстуры, вам необходимо запустить приложение TextureDrift на своем компьютере).



Рис. 5.10. Приложение TextureDrift


Приложение TextureDrift демонстрирует следующие технологии:

  • Анимация отдельной текстуры путем изменения параметров наложения текстуры на сетку.
  • Применение интерфейса Direct3DRMMesh чтобы увеличить быстродействие, благодаря отказу от дополнительной работы, выполняемой интерфейсом Direct3DRMMeshBuilder.
  • Использование функции GetVisuals() интерфейса Direct3DRMFrame для получения указателя на присоединенный к фрейму объект.

В приложении TextureDrift используется техника, которая слегка отличается от той, которая применялась в рассмотренных ранее приложениях. Ранее для создания и отображения сеток использовался интерфейс Direct3DRMMeshBuilder (за исключением приложения Decal в котором вообще не использовались сетки). В приложении TextureDrift интерфейс Direct3DRMMeshBuilder применяется для создания сетки, но не для ее отображения. Вместо этого интерфейс Direct3DRMMeshBuilder используется для создания экземпляра интерфейса Direct3DRMMesh. Это делается из-за соображений быстродействия. В главе 3 говорилось, что всякий раз, когда выполняется модификация параметров сетки, экземпляр интерфейса Direct3DRMMeshBuilder создает внутри себя экземпляр интерфейса Direct3DRMMesh. Чтобы приложение TextureDrift не выполняло лишней работы, мы используем интерфейс Direct3DRMMesh непосредственно.

Это не означает, что предыдущие приложения были плохо спроектированы. Если во время работы приложения не выполняется частой модификации параметров сеток, интерфейс Direct3DRMMeshBuilder обеспечивает хорошее быстродействие. В приложении TextureDrift мы применили интерфейс Direct3DRMMesh из-за того, что характеристики сетки меняются при каждом обновлении экрана.



Содержание раздела