Клонирование и общий доступ (Direct3D 9)

Параметры клонирования

Клонирование имеет следующие ограничения.

  • Клоны наследуют пул исходного эффекта. См. раздел Параметры общего доступа.
  • Клоны наследуют методы, проходы, параметры и заметки исходного эффекта (включая все заметки, добавленные с помощью ID3DXEffect).
  • Клоны наследуют динамически добавленные заметки исходного эффекта.
  • Клонирование на новое устройство завершится ошибкой, если пул исходного эффекта не имеет значения NULL и исходный эффект содержал общий параметр, зависящий от устройства (например, текстуру или шейдер).

Параметры общего доступа

Пул — это буфер, который совместно использует параметры эффектов между различными эффектами. Чтобы добавить параметры в пул, укажите общее использование при создании эффекта.

Пул имеет следующие ограничения.

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

Значение NULL можно использовать для указания отсутствия пула, в этом случае общие параметры не используются. Это почти эквивалентно указанию уникального пула только для этого эффекта. Единственное отличие заключается в том, что при клонировании эффекта клон не будет совместно использовать свои общие параметры с исходным.

Формат эффекта