창이 부착되지 않은 DirectX11?


13

오프 스크린 렌더링에만 DX11 또는 DX9를 초기화하고 사용할 수 있는지 궁금합니다. 창이 부착되어 있지 않습니다. 내 의도는 실제 창을 열기 전에 GPU 벤치마킹을 수행하는 것입니다. 이 벤치마킹에서는 일부 테스트 장면이 렌더링되지만 보이지 않아야합니다. (실제로 벤치 마크 점수에 따라 다른 창이 열립니다)


2
D3D11 에서는 스왑 체인을 만들 때 창 핸들을 제공 해야 합니다 ( 여기 참조) . 그러나이 창을 숨길 수있는 방법이 있습니까?
Laurent Couvidou

1
예, DX11은 스왑 체인을위한 윈도우 핸들을 필요로합니다.하지만 오프 스크린으로 렌더링 할 경우 스왑 체인 만 필요합니까?
스왑 체인

1
지금은 숨겨진 1x1px 창을 사용하려고합니다. 그러나 내가 말한 좋은 해결책은 아닙니다.
GPUquant

답변:


15

예. D3D11CreateDevice창이 필요하지 않은을 사용하여 Direct3D 장치를 초기화 할 수 있습니다 . 스왑 체인을 전혀 만들지 않습니다. 오프 스크린 렌더 타겟을 생성하여 일반적인 방식으로 그릴 수 있습니다. Present스왑 체인 을 호출 하는 대신 ID3D11DeviceContext::Flush대기 한 작업으로 GPU를 시작하도록 호출 할 수 있습니다 .

나중에 창을 만들려면 장치를 삭제하고로 다시 D3D11CreateDeviceAndSwapChain만들거나 스왑 체인을 만들어 기존 장치에 연결할 수 있습니다.IDXGIFactory::CreateSwapChain . ( 먼저 IDXGIFactory생성해야하는 별도의 COM 개체입니다 CreateDXGIFactory.)


+1 Flush스왑 체인을 제시하는 대신 호출 하면 깔끔합니다!
Laurent Couvidou

IDirect3D9::CreateDevice방법을 통해 D3D9에서 어떻게 든 가능 합니까? D3D9CreateDevice슬프게도 방법을 찾지 못했습니다 .
Vinz

@ Vinzenz 그렇게 생각하지 않습니다. D3D9와 달리 D3D9는 "장치"와 "스왑 체인"의 개념을 분리하지 않습니다. 둘 다 D3D9 장치 객체로 롤백되며 HWND생성 해야합니다 .
Nathan Reed
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.