2014-06-23 5 views
0

내 응용 프로그램에서 DirectX 9 API를 사용하여 특정 작업을 수행하려고합니다.DirectX 9 비디오 프레임을 특정 위치에 HWND로 보내거나 기존 창 내용을 그대로 두십시오.

DirectX 장치를 설정할 때 궁극적으로 그래픽 드라이버가 알아서 사용하는 창 핸들 (HWND)이 필요합니다. 내가 뭘하려는 건 주어진 창 핸들 안에는 그래픽 드라이버가 창의 특정 부분 만 렌더링하고 나머지 창은 그대로 둡니다. 예를 들어. 내 창 크기가 1280x720이고 동영상 프레임을 300x200라고 말한 창 안의 위치로 렌더링하고 표시하기를 원한다고 가정 해 봅시다. DirectX 9 API를 사용하는 가장 좋은 방법은 무엇입니까? 장치를 모두 설치했는데 이미 비디오를 전체 창에 잘 렌더링 할 수는 있지만, 이미 내용이 들어있는 창 핸들로 렌더링하려고하고 있으며, 동일한 창에서 비디오 프레임을 렌더링해야하는 곳을 지정합니다. 나는 그 위치에 프리젠 테이션을 지정하면 PresentEx()를 호출 할 때 프레임을 표시하면서 전체 윈도우를 검정색으로 표시합니다.

그래픽 드라이버가 그 창에있는 다른 모든 것들을 검게하지 않도록 알려줄 수 있는지 궁금합니다. 처음에는이 창에 일부 HTML 요소가 만들어졌으며 나머지 창은 드라이버를 닫지 않으려 고합니다.

어떻게 든 전체 백 버퍼를 창에 표시하는 방법을 생각했지만 투명하게 그리지 않으려는 버퍼의 일부를 어떻게 든 만들었지 만이를 달성하는 방법을 모르겠다. 어떤 도움을 주셔서 감사합니다.

+1

뷰포트를 뒤적 거리지 말고, DX 콘텐츠에 대한 하위 창을 만들고 모든 것을 갖도록하는 것이 좋습니다 (직사각형 영역으로 제한하려는 경우). –

+0

왜 뷰포트를 사용하지 않는 것이 좋을지 생각합니까? 뷰포트에 익숙하지 않지만 옵션 일 수 있습니까? – breakc0de

+0

제 의견으로는, 간단한 옵션을 취할 것입니다 - 주 콘텐츠 창에서 고정 된 위치에 자식 창을 만들고이를 DirectX에 바칩니다. 다른 라이브러리의 그래픽 출력을 믹싱하는 것은 가능하지만 어수선하고 어쩔 줄 모르게 끝날 것입니다. 뷰포트에 대해 정말로 알고 싶다면 - [이 MSDN 페이지를 읽으십시오] (http://msdn.microsoft.com/en-gb/library/windows/desktop/bb206341(v=vs.85) .aspx) 및 당신이 생각하는 것을보십시오. –

답변

0

윈도우 데스크톱 윈도우 관리자에서 DwmSetPresentParameters를 호출 할 때의 부작용이라는 것을 알게되었습니다. Windows 8.1에서는이 함수를 호출하지 않기 때문에 Windows 8에서 발생했습니다. 따라서 DirectX는 DwmSetPresentParameters 함수를 호출 한 후 DWM과 함께 작동하여 전체 창을 검게 만듭니다.