Só me pergunto, se é possível inicializar e usar o DX11 ou o DX9 apenas para renderização fora da tela - ou seja, sem janela anexada. Minha intenção é fazer alguns testes de GPU antes de abrir a janela real. Nesse benchmarking, algumas cenas de teste são renderizadas, mas não devem ser visíveis. (Na verdade, dependendo da pontuação de referência, janelas diferentes são abertas)
13
Respostas:
Sim. Você pode inicializar o dispositivo Direct3D usando
D3D11CreateDevice
, o que não requer janela. Você simplesmente não cria uma cadeia de troca. Você ainda pode criar destinos de renderização fora da tela e desenhar para eles da maneira usual. Em vez de ligarPresent
para a cadeia de troca, você pode ligarID3D11DeviceContext::Flush
para ativar a GPU com o trabalho na fila.Se você desejar criar uma janela posteriormente, poderá destruir o dispositivo e recriá-lo
D3D11CreateDeviceAndSwapChain
, ou criar uma cadeia de troca e anexá-la ao dispositivo existenteIDXGIFactory::CreateSwapChain
. (OIDXGIFactory
é um objeto COM separado que precisa ser criadoCreateDXGIFactory
primeiro.)fonte
Flush
vez de apresentar a cadeia de swap, isso é legal!IDirect3D9::CreateDevice
método?D3D9CreateDevice
Infelizmente não consegui encontrar um método.HWND
a criação de um.