Поделиться через


Растворения, затухания и прокрутки (Direct3D 9)

Все чаще в приложениях применяются специальные эффекты, широко распространенные в фильмах и видеороликах, такие как, рассеивание, скольжение и исчезания.

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

Когда приложение выполняет рассеивание, необходимо проводить отрисовку двух разных изображений. В этом случае буфер трафарета применяется для контроля отрисовки пикселей из каждого изображения на целевую поверхность. Вы можете определить серию масок трафарета и копировать их в буфер трафарета по мере поступления кадров. Либо же, вы можете определить базовую маску трафарета для первого кадра и постепенно ее менять.

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

Эффект постепенного появления или исчезновения — это особый случай рассеивания. При постепенном появлении, буфер трафарета используется для рассеивания из черного или белого изображения в отрисовку 3D-сцены. Постепенное исчезновение выполняется наоборот, приложение начинает с отрисовки трехмерной сцены и рассеивает ее в черное или белое изображение. Такой переход можно выполнить с любым желаемым узором.

В приложениях Direct3D используется похожий метод для эффекта скольжения. Например? когда приложение выполняет скольжение слева направо, конечное изображение постепенно накатывается поверх начального изображения в направлении слева направо. Как и в случае рассеивания следует определить серию масок трафарета, которые загружаются в буфер трафарета для последующих кадров, или последовательно менять начальную маску трафарета. Маски трафарета используются для отключения записи пикселей из начального изображения и для включения записи пикселей конечного изображения.

Скольжение как эффект несколько более сложен чем рассеивание, так как приложению нужно считывать пиксели конечного изображения в порядке обратном направлению скольжения. То есть, если скольжение идет слева направо, приложение должно считывать пиксели конечного изображения справа налево.

Методы буфера набора элементов