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

         

Direct3DRMShadow: интерфейс тени


Библиотека Direct3D разрабатывалась для создания быстродействующих приложений. В связи с этим иногда приходится приносить в жертву производительности точность и реализм. Хорошим примером является поддержка теней в Direct3D, поскольку методы визуализации, применяемые в Direct3D не вычисляют тени. Поддержка теней сводится к добавлению к сцене объектов, иммитирующих эффект отбрасывания тени. Эта имитация является очень упрощенной и имеет насколько ограничений.

Для создания тени требуется задать следующие элементы:

  • объект, отбрасывающий тень;
  • источник света, используемый при вычислении параметров тени;
  • плоскость, на которой отображается тень.

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

Другое ограничение связано с необходимостью указывать плоскость на которую отбрасывается тень. Это значит, что вы не сможете получить тень на сложном объекте. Убедительные тени в Direct3D требуют плоских поверхностей.

Объекты теней являются экземплярами интерфейса Direct3DRMShadow и создаются посредством функции CreateShadow() интерфейса Direct3DRM. Интерфейс теней предоставляет только одну функцию: Init(). Функция Init() используется редко, поскольку функция CreateShadow() выполняет те же действия и проще в использовании.




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