다음을 통해 공유


디졸브, 페이드 및 살짝 밀기(Direct3D 9)

애플리케이션이 디졸브, 스와이프, 페이드와 같이 영화와 비디오에서 흔히 사용되는 특수 효과를 이용하는 경우가 점점 늘고 있습니다.

디졸브에서는 한 이미지가 매끄러운 프레임 시퀀스에서 점진적으로 다른 이미지로 대체됩니다. Direct3D가 다중 텍스처 혼합을 사용하여 동일한 효과를 구현하는 방법을 제공하지만, 디졸브를 위해 스텐실 버퍼를 사용하는 애플리케이션은 디졸브를 구현하면서 텍스처 혼합 기능을 다른 효과에 사용할 수 있습니다.

애플리케이션은 디졸브를 수행할 때 두 개의 이미지를 렌더링해야 합니다. 애플리케이션은 스텐실 버퍼를 사용하여 각 이미지에서 어느 픽셀을 렌더링 대상 표면에 그릴지 제어합니다. 일련의 스텐실 마스크를 정의하여 연속 프레임에서 스텐실 버퍼로 복사할 수 있습니다. 또는, 첫 번째 프레임에 대해 기본 스텐실 마스크를 정의하고 점증하도록 변경할 수 있습니다.

디졸브 시작 시, 애플리케이션은 스텐실 함수 및 스텐실 기능을 시작 이미지의 픽셀이 대부분 스텐실 테스트를 통과하도록 설정합니다. 종료 이미지의 픽셀은 대부분 스텐실 테스트에서 실패해야 합니다. 연속 프레임에서, 시작 이미지의 픽셀이 테스트를 통과하는 수가 점감하도록 스텐실 마스크가 업데이트됩니다. 프레임이 진행되면서 종료 이미지의 픽셀이 테스트에 실패하는 수가 점감합니다. 이러한 방식으로 애플리케이션이 임의의 디졸브 패널을 사용하여 디졸브를 수행할 수 있습니다.

페이드 인 또는 페이드 아웃은 디졸브의 특별한 경우입니다. 페이드 인의 경우, 스텐실 버퍼가 검은색 또는 흰색 이미지에서 3D 장면의 렌더링으로 디졸브하는 데 사용됩니다. 페이드 아웃에서는 이와 반대로 애플리케이션이 3D 장면 렌더링에서 시작하여 검은색 또는 흰색으로 디졸브합니다. 페이드는 원하는 임의의 패턴을 사용하여 수행할 수 있습니다.

Direct3D 애플리케이션은 스와이프에 대해 비슷한 기법을 사용합니다. 예를 들어, 애플리케이션이 왼쪽에서 오른쪽 스와이프를 수행하는 경우 종료 이미지가 시작 이미지 위를 왼쪽에서 오른쪽으로 점점 미끄러지는 것처럼 보입니다. 디졸브에서와 마찬가지로, 연속 프레임에서 스텐실 버퍼에 로드되는 일련의 스텐실 마스크를 정의하거나 시작 스텐실 마스크를 연속적으로 수정해야 합니다. 시작 이미지의 픽셀이 기록되지 않고 종료 이미지의 픽셀이 기록되도록 스텐실 마스크가 사용됩니다.

스와이프는 애플리케이션이 스와이프의 역순으로 종료 이미지의 픽셀을 읽어야 한다는 점에서 디졸브보다 약간 복잡합니다. 즉, 스와이프가 왼쪽에서 오른쪽으로 이동한다면 애플리케이션은 종료 이미지의 픽셀을 오른쪽에서 왼쪽으로 읽어야 합니다.

스텐실 버퍼 기술