2011-02-24 6 views
1

나는 다중 디스플레이로 작동하는 SlimDX 앱을 개발 중입니다. 응용 프로그램은 선택된 디스플레이를 차지할 것이고 선택은 int와 같은 명령 줄을 통해 입력됩니다. 그런 다음 System.Windows.Forms.Screen.AllScreens[selection]을 사용하여 바운드에 대해 알아보고 디스플레이에 내 앱 "전체 화면"을 표시합니다.어떤 디스플레이가 어떤 어댑터에 속하는지 찾으십시오.

이제 성능을 최적화하기 위해 Direct3D 장치를 초기화 할 GPU 어댑터를 선택해야합니다. 선택한 디스플레이에 어떤 GPU 어댑터가 전원을 공급하고 있는지 어떻게 알 수 있습니까?

각 GPU 어댑터에 1-2 개의 디스플레이가 연결되어있을 수 있으므로 디스플레이 번호를 사용할 수 없습니다.

저는 Direct3D10을 활용하고 있습니다. Direct3D9에서는 솔루션에 신경 쓰지 않습니다.

사용자가 명령 줄을 통해 디스플레이 및 어댑터를 선택하도록하는 것이 좋지만 바보 증명 방법을 선호합니다.

감사

답변

2

같은 세부 사항을 관리하기위한 두 D3D10 및 D3D11 사용 DXGI. 작성한 팩토리 인터페이스를 사용하면 시스템에 설치된 어댑터 목록을 얻을 수 있습니다. 각 어댑터는 하나 이상의 출력을 가질 수 있으며, 어댑터 인터페이스에서 열거 할 수 있습니다.

이것은 출력 경계의 Rectangle과 실행중인 모니터의 IntPtr 핸들을 포함하는 Description 속성을 가진 Output 인터페이스 목록을 가져옵니다.

WinForms Screen 클래스가 기본 네이티브 포인터를 노출하지 않는다고 생각합니다. 그래서 우리는 SlimDX.Windows.DisplayMonitor 클래스를 제공하여 Screen 클래스를 대체합니다. 이를 사용하여 디스플레이의 특정 세부 사항을 결정하고 필요에 맞는 적절한 어댑터를 선택할 수 있습니다.

+0

Output을 속성으로 예상했기 때문에 찾지 못했습니다. 그것은 SlimDX.Windows.DisplayMonitor에 대한 솔루션과 정보입니다. 매우 도움이됩니다. – faulty

+0

Google이 이미 내 질문에 대한 답변을 갖고 있고 Stackoverflow에 있습니다. SlimDX를 매우 유용하게 사용하고 있습니다. 그것을 만들어 줘서 고마워. – U62

관련 문제