WS_EX_LAYERED 스타일 창을 사용하여 경계선없는 창을 만들려고합니다. 목표는 DirectX를 사용하여 바탕 화면에 직접 그래픽을 렌더링하고 알파를 사용하여 현재 데스크톱 창에 블렌드하는 것입니다.스킨 된 창 : Win32 API 및 DirectX
내 시스템에서이 기술은 완벽하게 작동하는 것 같습니다. 다양한 알파 레벨을 설정하고 다양한 수준의 투명성을 얻을 수 있습니다. 불행히도 여러 사용자가 심각한 성능 문제와 낮은 프레임 속도를보고하여이 기술을 사용할 수 없게 만들었습니다. 다음과 같이
코드 설정은 다음과 같습니다
- 는 계층화 된 (WS_EX_LAYERED 확장 스타일) 창을 만듭니다.
- HWND 창을 사용하여 DirectX를 초기화하십시오.
- CreateRenderTarget DirectX 메서드를 사용하여 렌더링 대상을 만듭니다.
그런 다음 렌더링 루프시 :
- 의 DirectX 호출을 사용하여 렌더 타겟에 그래픽을 렌더링합니다.
- GetDC 메서드를 사용하여 DirectX 렌더링 대상 표면에 대한 HDC 핸들을 가져옵니다.
- DirectX 표면 HDC를 지정하여 UpdateLayeredWindow 함수를 사용하여 창 내용을 업데이트하십시오.
내 질문은 : 내가 잘못하고있는 것입니까? 창 업데이트의 성능을 향상시킬 수있는 방법이 있습니까? 렌더링 대상을 잠그고 수동으로 DIB 섹션에 비트를 복사하여 성공하지 않고 창 영역에 표시하는 등의 다양한 작업을 시도했습니다.
기본적으로 Aero는 사용하지 않도록 설정되어 있지만 사용하도록 설정했기 때문에 성능이 변경되지 않았습니다. –