DirectComposition 모범 사례
참고 항목
Windows 10 앱의 경우 DirectComposition 대신 Windows.UI.Composition API를 사용하는 것이 좋습니다. 자세한 내용은 시각적 계층을 사용하여 데스크톱 앱 현대화를 참조하세요.
이 항목에서는 Microsoft DirectComposition 사용에 대한 모범 사례를 설명합니다.
모범 사례
다음 표에서는 Microsoft DirectComposition 시각적 개체를 사용하는 데 권장되는 사례를 보여 줍니다.
연습 | 설명 |
---|---|
DirectComposition 디바이스를 만든 후 각 WM_PAINT 메시지에 대한 응답으로 IDCompositionDevice::CheckDeviceState 메서드를 호출하여 디바이스가 여전히 유효한지 확인합니다. |
Microsoft DXGI(DirectX Graphics Infrastructure) 디바이스가 손실되면 DXGI 디바이스와 연결된 DirectComposition 디바이스도 손실됩니다. 분실된 디바이스를 감지하면 DirectComposition은 모든 창에 WM_PAINT 메시지를 보냅니다. 각 WM_PAINT 메시지에 대한 응답으로 CheckDeviceState를 호출하면 DirectComposition 디바이스 개체가 여전히 유효한지 여부를 확인하고 그렇지 않은 경우 콘텐츠를 복구하는 단계를 수행할 수 있습니다. 자세한 내용은 Device 개체를 참조 하세요. |
컴퍼지션 또는 애니메이션에 필요한 시각적 개체의 수만 만들고 DirectComposition 사용을 완료한 직후 시각적 개체를 삭제합니다. |
DirectComposition은 애플리케이션이 다른 애플리케이션 및 운영 체제와 공유하는 리소스인 GPU(그래픽 처리 장치)를 사용합니다. 이렇게 하면 모든 애플리케이션과 운영 체제에서 적절한 GPU 리소스를 받을 수 있습니다. 자세한 내용은 시각적 개체를 참조 하세요. |
불투명도를 0%로 설정하여 시각적 개체를 숨기지 마세요. 대신 시각적 개체 트리에서 시각적 개체를 제거합니다. |
불투명도를 0%로 설정하려면 시각적 트리에서 제거하는 것보다 더 많은 시스템 리소스가 필요합니다. 자세한 내용은 불투명도 및 시각적 트리를 참조하세요. |
빈(크기가 0인) 클립 사각형을 시각적 개체에 적용하여 시각적 개체를 숨기지 마세요. 대신 시각적 개체 트리에서 시각적 개체를 제거합니다. |
시각적 트리에서 시각적 개체를 제거하면 빈 클립 사각형을 적용하는 것보다 성능이 향상됩니다. 자세한 내용은 클리핑을 참조 하세요. |
클립 사각형이 필요하지 않은 경우(예: 시각적 개체의 전체 비트맵 콘텐츠를 포함하는 클립 사각형) 시각적 개체에 클립 사각형을 적용하지 마세요. |
불필요한 클립 사각형은 시스템 성능에 해를 끼칩니다. 자세한 내용은 클리핑을 참조 하세요. |
큰 단일 색 비트맵이 필요한 경우 더 작은 비트맵 표면을 만든 다음 전체 크기의 표면을 만드는 대신 배율 변환을 적용합니다. |
더 작은 표면에 배율 변환을 적용하면 전체 크기의 표면보다 적은 시스템 리소스가 사용됩니다. 자세한 내용은 비트맵 개체 및 변환을 참조하세요. |
부모 및 하위 항목과 같은 시각적 트리의 여러 수준에 3D 변환을 적용하지 마세요. |
3D 변환을 여러 수준의 시각적 트리에 적용하면 3D 변환이 트리에 곱되지 않으므로 의도하지 않은 결과가 생성될 수 있습니다. 예를 들어 자식의 y축을 중심으로 90도 회전하고 부모에서 y축을 중심으로 90도 회전하면 두 시각적 개체가 모두 아무 것도 회전하지 않습니다. 자세한 내용은 효과를 참조하세요. |
보안 고려 사항
다음 문서에서는 보안 C++ 코드를 작성하기 위한 지침을 제공합니다.