Pencere takılı olmadan DirectX11?


13

Sadece ekran dışı işleme için DX11 veya DX9'u başlatmak ve kullanmak mümkünse, yani ekli bir pencere olmadan merak ediyorum. Amacım, gerçek pencereyi açmadan önce bazı GPU kıyaslamaları yapmak. Bu kıyaslamada bazı test sahneleri oluşturulur, ancak görünür olmamalıdır. (Aslında karşılaştırma puanına bağlı olarak farklı pencereler açılır)


2
D3D11 ile takas zincirini oluştururken bir pencere kolu sağlamanız gerekir , buraya bakın . Ama belki bu pencereyi saklamanın bir yolu var mı?
Laurent Couvidou

1
evet, biliyorum, DX11 swapchain için pencere kolu gerektirir - ama sadece ekrandan çıkarırsanız gerçekten herhangi bir swapchain'e ihtiyacınız var mı? Swapchain olmadan başlatmak ve işlemek için bir yol var mı - Swapchain'in sadece ekran oluşturmak için olduğunu düşündüm ...
GPUquant

1
Şu anda gizli 1x1px penceresini kullanmaya çalışıyorum. Ama söyleyeceğim hoş bir çözüm değil.
GPUquant

Yanıtlar:


15

Evet. Direct3D aygıtını D3D11CreateDevice, hiçbir pencere gerektirmeyen kullanarak başlatabilirsiniz . Sadece bir takas zinciri oluşturmazsınız. Yine de ekran dışında oluşturma hedefleri oluşturabilir ve bunlara normal şekilde çizim yapabilirsiniz. PresentTakas zincirini aramak yerine, ID3D11DeviceContext::Flushsıraya koyduğunuz çalışma ile GPU'yu tekmelemek için arayabilirsiniz .

Daha sonra bir pencere oluşturmak istiyorsanız, cihazı yok edip yeniden D3D11CreateDeviceAndSwapChainoluşturabilir veya bir takas zinciri oluşturabilir ve mevcut cihaza ile ekleyebilirsiniz IDXGIFactory::CreateSwapChain. (İlk IDXGIFactoryönce oluşturulması gereken ayrı bir COM nesnesidir CreateDXGIFactory.)


+1 FlushTakas zincirini sunmak yerine, bu temiz!
Laurent Couvidou

Bu IDirect3D9::CreateDeviceyöntemle D3D9 ile bir şekilde mümkün mü ? Ne D3D9CreateDeviceyazık ki bir yöntem bulamadım .
Vinz

@Vinzenz Ben öyle düşünmüyorum. D3D9, "cihaz" ve "takas zinciri" kavramlarını D3D10 ve üstü gibi ayırmaz. Her ikisi de HWNDoluşturmak için bir D3D9 cihaz nesnesine yuvarlanır .
Nathan Reed
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.