DirectX11 खिड़की से जुड़े बिना?


13

मुझे आश्चर्य है, अगर यह संभव है कि केवल ऑफस्क्रीन रेंडरिंग के लिए DX11 या DX9 को इनिशियलाइज़ और उपयोग किया जाए - जिसका अर्थ है बिना जुड़ी हुई विंडो। मेरा इरादा वास्तविक विंडो खोलने से पहले कुछ GPU बेंचमार्किंग करना है। इस बेंचमार्किंग में कुछ टेस्ट सीन दिए गए हैं, लेकिन दिखाई नहीं देने चाहिए। (वास्तव में बेंचमार्क स्कोर के आधार पर अलग-अलग विंडो खोली जाती हैं)


2
D3D11 के साथ आपको स्वैप श्रृंखला बनाते समय एक विंडो हैंडल प्रदान करने की आवश्यकता है, यहां देखें । लेकिन शायद इस खिड़की को छिपाने का एक तरीका है?
लॉरेंट कौविदो

1
हाँ, मुझे पता है, कि DX11 को स्वेपचैन के लिए विंडो हैंडल की आवश्यकता होती है - लेकिन अगर आप केवल ऑफस्क्रीन रेंडर करते हैं तो क्या आपको वास्तव में किसी स्वेपचैन की आवश्यकता है? क्या स्वेपचैन के बिना इसे शुरू करने और प्रस्तुत करने का कोई तरीका है - मुझे लगा कि स्वैपचैन सिर्फ स्क्रीन रेंडरिंग के लिए है ...
GPUquant

1
अभी मैं 1x1px विंडो का उपयोग करने की कोशिश कर रहा हूं जो छिपी हुई है। लेकिन यह अच्छा समाधान नहीं है मैं कहूँगा।
जीपक्वांट

जवाबों:


15

हाँ। आप Direct3D डिवाइस का उपयोग करके इनिशियलाइज़ कर सकते हैं D3D11CreateDevice, जिसके लिए किसी विंडो की आवश्यकता नहीं है। आप बस एक स्वैप श्रृंखला नहीं बनाते हैं। आप अभी भी ऑफस्क्रीन रेंडर टारगेट बना सकते हैं और सामान्य तरीके से उन्हें आकर्षित कर सकते हैं। Presentस्वैप चेन पर कॉल करने के बजाय , आप ID3D11DeviceContext::FlushGPU को उस काम से किक करने के लिए कह सकते हैं, जिसे आपने कतारबद्ध किया है।

यदि आप बाद में एक विंडो बनाना चाहते हैं, तो आप डिवाइस को नष्ट कर सकते हैं और इसे फिर से D3D11CreateDeviceAndSwapChainबना सकते हैं, या आप एक स्वैप श्रृंखला बना सकते हैं और इसे मौजूदा डिवाइस के साथ संलग्न कर सकते हैं IDXGIFactory::CreateSwapChain। ( IDXGIFactoryएक अलग COM ऑब्जेक्ट है जिसे CreateDXGIFactoryपहले बनाया जाना चाहिए ।)


+1 Flushस्वैप चेन पेश करने के बजाय कॉल करना, यह साफ-सुथरा है!
लॉरेंट कौविदो

यह IDirect3D9::CreateDeviceविधि के माध्यम से D3D9 के साथ किसी भी तरह संभव है ? मुझे D3D9CreateDeviceदुःख की बात नहीं है।
विनज

@Vinzenz मुझे ऐसा नहीं लगता। डी 3 डी 9 डी 3 डी 10 और अप के रूप में "डिवाइस" और "स्वैप चेन" की अवधारणाओं को अलग नहीं करता है। वे दोनों डी 3 डी 9 डिवाइस ऑब्जेक्ट में रोल किए गए हैं, जिसे HWNDबनाने के लिए ए की आवश्यकता होती है ।
नाथन रीड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.