Me pregunto si es posible inicializar y usar DX11 o DX9 solo para renderizar fuera de pantalla, es decir, sin ventana adjunta. Mi intención es hacer un benchmarking de GPU antes de abrir la ventana real. En esta evaluación comparativa se representa una escena de prueba, pero no debe ser visible. (En realidad, dependiendo del puntaje de referencia, se abren diferentes ventanas)
13

Respuestas:
Si. Puede inicializar el dispositivo Direct3D utilizando
D3D11CreateDevice, lo que no requiere ninguna ventana. Simplemente no crea una cadena de intercambio en absoluto. Todavía puede crear objetivos de renderizado fuera de pantalla y dibujar en ellos de la manera habitual. En lugar de llamarPresenta la cadena de intercambio, puedes llamarID3D11DeviceContext::Flushpara patear la GPU con el trabajo que has puesto en cola.Si más tarde desea crear una ventana, puede destruir el dispositivo y volver a
D3D11CreateDeviceAndSwapChaincrearlo, o puede crear una cadena de intercambio y adjuntarlo al dispositivo existente conIDXGIFactory::CreateSwapChain. (ElIDXGIFactoryes un objeto COM separado que debe crearseCreateDXGIFactoryprimero).fuente
Flushlugar de presentar la cadena de intercambio, ¡esto es genial!IDirect3D9::CreateDevicemétodo? No pude encontrar unD3D9CreateDevicemétodo tristemente.HWNDpara crear.