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 llamarPresent
a la cadena de intercambio, puedes llamarID3D11DeviceContext::Flush
para 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
D3D11CreateDeviceAndSwapChain
crearlo, o puede crear una cadena de intercambio y adjuntarlo al dispositivo existente conIDXGIFactory::CreateSwapChain
. (ElIDXGIFactory
es un objeto COM separado que debe crearseCreateDXGIFactory
primero).fuente
Flush
lugar de presentar la cadena de intercambio, ¡esto es genial!IDirect3D9::CreateDevice
método? No pude encontrar unD3D9CreateDevice
método tristemente.HWND
para crear.