효과 (DirectComposition)

참고

Windows 10에 대 한 앱의 경우 directcomposition 대신 Windows. uia api를 사용 하는 것이 좋습니다. 자세한 내용은 시각적 계층을 사용 하 여 데스크톱 앱 현대화을 참조 하세요.

이 항목에서는 Microsoft DirectComposition 효과의 기본 사항에 대해 설명 하 고 DirectComposition이 지 원하는 효과의 유형을 설명 합니다.

이 항목에는 다음과 같은 섹션이 포함되어 있습니다.

DirectComposition 효과는 무엇 인가요?

DirectComposition 효과 는 시각적 개체의 래스터화 중에 적용 되는 비트맵 작업으로 시각적 개체의 모양을 변경 하는 것입니다.

DirectComposition은 효과를 적용 하기 전에 시각적 하위 트리를 가져와서 단일 비트맵으로 렌더링 하 여 효과를 만듭니다. 예를 들어 3D 큐브 뷰 변형 효과를 만들려면 DirectComposition이 시각적 하위 트리의 이미지를 생성 한 다음 3D 변환 효과의 결과 행렬에 따라 변환 되는 3D 평면으로 이미지를 질감 합니다.

DirectComposition은 다음과 같은 종류의 효과를 지원 합니다.

효과 유형 Description
불투명도 전체 시각적 개체의 불투명도를 설정 합니다.
3D 큐브 뷰 변환 시각적 개체에 3 차원 (3D) 큐브 뷰 변형 효과를 적용 합니다.

참고

DirectComposition은 3D 스테레오 콘텐츠에 효과를 적용할 때 특별 한 처리 작업을 수행 하지 않습니다. 즉, 효과가 적용 될 때 3D 내용이 비틀어 진 것 처럼 보일 수 있습니다.

불투명도

불투명 효과를 사용 하면 시각적 개체를 렌더링할 때 전체 시각적 개체에 적용 되는 불투명도 요소를 설정할 수 있습니다. 동일한 불투명도 계수가 시각적 개체의 모든 픽셀에 적용 된다는 점에서 알파 마스크와는 다릅니다. 불투명도는 0 (완전히 투명)에서 1 (완전히 불투명) 사이의 값으로 지정 됩니다.

불투명도 비율은 부모에서 자식 시각적 개체에 적용 되지만 중첩 된 불투명도 설정의 표시 효과는 개별 자식 시각적 개체의 속성 값에 표시 되지 않습니다. 예를 들어, 루트 시각적 개체의 불투명도가 50% (0.5)이 고 해당 자식 중 하나의 불투명도가 20% (0.2) 인 경우 해당 자식의 net 불투명도는 10% (0.1)로 렌더링 되지만 자식의 불투명도 속성 값은 계속 해 서 0.2입니다.

3D 원근 변환 효과

이 섹션에서는 DirectComposition에서 3D 원근 변환 효과를 수행 하는 데 사용 하는 좌표 공간에 대해 설명 합니다. 또한 DirectComposition이 지 원하는 3D 큐브 뷰 변형 효과의 유형을 설명 합니다.

참고

DirectComposition에서 시각적 트리의 여러 수준에 3D 효과를 적용 하는 것은 Microsoft Direct3D와 같은 전체 3D 엔진과 동일한 방식으로 작동 하지 않습니다. 예를 들어 단일 자식 시각적 개체를 포함 하는 부모 시각적 개체를 가정 합니다. 자식 시각적 개체를 z 방향 (y 축 중심)에서 90 도씩 회전 하는 경우 자식 시각적 가장자리의 가장자리는 뷰어를 표시 하므로 시각적 개체는 표시 되지 않습니다 (비트맵에 실제 깊이가 없으므로 표시 되지 않음). 부모 시각적 개체를 z z 방향 (y 축 중심)에서 90도 뒤로 회전 하는 경우 변형이 서로 반전 되기 때문에 자식 시각적 개체를 완전히 시각적으로 표시 하 게 될 수 있습니다. 그러나 DirectComposition에서는 그렇지 않습니다. 자식 시각적 개체는 부모 비트맵으로 "평면화" 되기 때문에 표시 되지 않습니다.

DirectComposition 3D 좌표 공간입니다.

3D 변형 효과에 대 한 DirectComposition 좌표 공간은 비트맵 표면의 왼쪽 위 모퉁이에서 원점 (0, 0, 0)을 찾고, 양수 x 축 값은 오른쪽으로 진행 하 고, 양의 y 축 값은 아래로 진행 하 고, 양의 z-축 값은 원점에서 뷰어로 계속 진행 됩니다. 이 그림에서는 DirectComposition 3D 좌표 공간을 보여 줍니다.

directcompostion 3d 좌표 공간

3D 회전 변형 효과

3D 회전 변형 효과는 지정 된 [ ] 중심점 (x, y, z)에 있는 회전 축 벡터 x, y, z에 대해 지정 된 각도 만큼 세 개의 차원으로 시각적 개체를 회전 합니다. 각도는도 단위로 지정 됩니다. 기본 회전 축 벡터는 [ 0, 0,-1 ] 및 기본 중심점은 (0, 0, 0)입니다.

IDCompositionDevice:: CreateRotateTransform3D 메서드를 사용 하 여 3d 회전 변환 개체를 만듭니다. 메서드는 개체의 속성을 설정 하는 데 사용할 수 있는 IDCompositionRotateTransform3D 인터페이스를 검색 합니다.

3D 배율 변환 효과

3D 크기 조정 변환 효과를 사용 하면 시각적 개체를 더 크게 만들 수 있습니다. [ ] 중심점 (x, y, z)에 대 한 x, y, z 방향으로 시각적 개체의 크기를 조정 합니다. 기본 중심점은 (0, 0, 0)입니다.

IDCompositionDevice:: CreateScaleTransform3D 메서드를 사용 하 여 3d 배율 변환 개체를 만듭니다. 메서드는 개체의 속성을 설정 하는 데 사용할 수 있는 IDCompositionScaleTransform3D 인터페이스를 검색 합니다.

3D 번역 변환 효과

3D 번역 변환 효과는 [ x, y, z 방향으로 시각적 개체의 위치를 변경 합니다 ] .

IDCompositionDevice:: CreateTranslateTransform3D 메서드를 사용 하 여 3d 번역 변환 개체를 만듭니다. 메서드는 개체의 속성을 설정 하는 데 사용할 수 있는 IDCompositionTranslateTransform3D 인터페이스를 검색 합니다.

3D 행렬 변형 효과

IDCompositionMatrixTransform3D 인터페이스를 사용 하 여 고유한 4 x 4 변환 매트릭스를 정의 하 고 시각적 개체에 적용할 수 있습니다. 이 인터페이스는 다른 DirectComposition 3D 변환 효과 인터페이스를 통해 사용할 수 없는 3D 큐브 뷰 변형 효과의 유형을 적용 해야 하는 경우에 유용 합니다. D3DMATRIX 구조체를 채우고 IDCompositionMatrixTransform3D:: setmatrix 메서드에 전달 하 여 행렬을 정의 합니다. 또는 IDCompositionMatrixTransform3D:: SetMatrixElement 메서드를 사용 하 여 행렬의 각 요소를 설정할 수 있습니다.

3D 변환 효과 그룹

IDCompositionDevice:: CreateTransform3DGroup 는 시각적 개체에 그룹으로 적용할 수 있는 3d 변환 효과의 컬렉션을 만듭니다. 배열에는 임의 개수의 transform 개체가 포함 될 수 있으며 행렬, 회전, 배율 및 변환 변환이 포함 될 수 있습니다. 3D transform 개체의 컬렉션은 해당 값이 컬렉션에 있는 개별 변환 매트릭스의 행렬 곱셈 인 변환을 발생 합니다.

그룹에서 개별 변환의 순서는 중요 합니다. 예를 들어 경우 먼저 회전 다음 크기 조정, 변환, 결과 얻게 다른 보다 먼저 변환 하는 경우 다음 회전 하 고 확장 합니다. DirectComposition은 2D 변환과 동일한 방식으로 변환 3D 그룹 내에서 3D 변환을 지정 하는 순서를 지정 합니다. 또한 3D 큐브 뷰 변환은 현재 시각적 개체의 모든 3D 변환이 적용 된 후 시각적 트리를 평면화 합니다. 이렇게 하면 장면이 최대한 3D에 가깝게 보이도록 할 수 있습니다.

효과 개체

시각적 개체에 효과를 적용 하려면 먼저 시각적 개체에서 생성 하려는 효과의 유형을 나타내는 효과 개체의 속성을 만들고 설정 해야 합니다. 그런 다음 효과 개체를 시각적 개체의 효과 속성에 적용 해야 합니다.

효과 개체를 만들려면 다음 IDCompositionDevice interface 메서드 중 하나를 사용 하 여 원하는 효과의 유형에 대 한 효과 개체를 만듭니다. 다음 메서드는 효과 개체를 만듭니다.

위의 각 메서드는 새로 만든 효과 개체의 속성을 설정 하는 데 사용할 수 있는 인터페이스를 검색 합니다. 인터페이스 메서드를 사용 하 여 원하는 시각적 효과를 생성 하기 위해 필요한 속성을 설정 합니다.

효과 개체의 속성 대부분에 애니메이션을 적용할 수 있습니다. 특정 속성에 애니메이션 효과를 주려면 애니메이션 개체를 만들어 애니메이션 효과를 적용할 속성에 적용 합니다. 그렇지 않으면 원하는 효과를 생성 하는 정적 값으로 속성을 설정 합니다. 속성에 애니메이션을 적용 하는 방법에 대 한 자세한 내용은 애니메이션을 참조 하세요.

효과 개체를 시각적 개체에 적용 하려면 IDCompositionVisual:: SetEffect 메서드를 호출 합니다. 시각적 개체에 효과를 적용 하면 해당 시각적 개체에서 시작 하는 전체 시각적 하위 트리에 효과가 적용 됩니다. 예를 들어 시각적 개체의 불투명도를 50 퍼센트로 설정 하면 시각적 하위 트리에 있는 모든 자식 시각적 개체의 불투명도는 50%가 됩니다. 하나 이상의 시각적 개체에 동일한 효과 개체를 적용할 수 있습니다. 개체를 시각적 개체에 적용 한 후에 효과 개체의 속성을 수정 하면 변경 내용을 반영 하도록 모든 시각적 개체가 다시 구성 됩니다.

효과 그룹 개체를 사용 하 여 시각적 개체에 여러 효과를 동시에 적용할 수 있습니다. 먼저 IDCompositionDevice:: CreateEffectGroup 를 호출 하 여 효과 그룹 개체를 만든 다음 개체의 IDCompositionEffectGroup 인터페이스를 사용 하 여 그룹에 효과를 추가 합니다.

DirectComposition 개념