Saya hanya ingin tahu, apakah mungkin untuk menginisialisasi dan menggunakan DX11 atau DX9 hanya untuk rendering pada layar - artinya tanpa jendela yang terpasang. Tujuan saya adalah melakukan pembandingan GPU sebelum membuka jendela sebenarnya. Dalam pembandingan ini, beberapa adegan pengujian ditampilkan, tetapi seharusnya tidak terlihat. (Sebenarnya tergantung pada skor patokan jendela yang berbeda dibuka)
13
Jawaban:
Iya. Anda dapat menginisialisasi perangkat Direct3D menggunakan
D3D11CreateDevice
, yang tidak memerlukan jendela. Anda sama sekali tidak membuat rantai swap sama sekali. Anda masih bisa membuat target render di layar dan menggambar dengan cara biasa. Alih-alih memanggilPresent
rantai swap, Anda dapat meneleponID3D11DeviceContext::Flush
untuk menendang GPU dengan pekerjaan yang telah Anda antri.Jika nanti Anda ingin membuat jendela, Anda dapat menghancurkan perangkat dan membuatnya kembali
D3D11CreateDeviceAndSwapChain
, atau Anda dapat membuat rantai swap dan memasangnya dengan perangkat yang adaIDXGIFactory::CreateSwapChain
. (IniIDXGIFactory
adalah objek COM terpisah yang perlu dibuatCreateDXGIFactory
terlebih dahulu.)sumber
Flush
alih-alih menghadirkan rantai swap, ini rapi!IDirect3D9::CreateDevice
metode ini? Saya tidak dapat menemukanD3D9CreateDevice
metode dengan sedih.HWND
untuk membuat.