2010-09-27 8 views
5

के बारे में उलझन में मैं ओपनजीएल में नया हूं। मैं इसे JOGL के साथ उपयोग कर रहा हूं।फ्रस्टम कूलिंग

मैं छिन्नक culling के बारे में पढ़ रहा हूँ:

http://www.lighthouse3d.com/opengl/viewfrustum/

http://www.crownandcutlass.com/features/technicaldetails/frustum.html

मुझे यकीन है कि वास्तव में क्या यह करना चाहिए था नहीं हूँ। ओपनजीएल स्वचालित रूप से ऑफ़-स्क्रीन ऑब्जेक्ट्स को नहीं खोलता है? (यह सिर्फ पहली जगह में वस्तुओं नहीं भेज तुलना में काफी धीमी मारने है?)

क्या मैं पढ़ रहा हूँ, यह इस तरह नहीं दिखता है ड्राइंग वस्तुओं है कि एक और पीछे छिप लेकिन भीतर कर रहे हैं कर रहे हैं परहेज संभाल लेंगे से निराशा देखना क्या इसका मतलब यह है कि ओपनजीएल को ऑफ़-स्क्रीन ऑब्जेक्ट भेजने से बचने का एकमात्र लाभ है?

+0

दूसरा लिंक मेरा दिन बचाएं, धन्यवाद! :-) –

उत्तर

1

जब आप कोड में फ्रस्टम चेक करते हैं, तो आप इसे सरल ज्यामिति का उपयोग करते हैं जो ऑब्जेक्ट को खींचा जाता है। यह प्रत्येक त्रिभुज को खींचने की कोशिश कर रहे कार्ड से बहुत तेज़ किया जा सकता है।

4

हां, आप मूल रूप से सही हैं। फ्रैस्टम कूलिंग कैमरे पिरामिड के बाहर की वस्तुओं को काट देता है। ओपनजीएल, एक दृश्य को प्रस्तुत करते समय, निश्चित रूप से यह भी प्रति vertex आधार पर करता है। फ्रस्टम कूलिंग प्रति ऑब्जेक्ट काम करता है और इसकी प्रदर्शन क्षमता क्षमता बहुत अधिक है।
बाधाओं में से एक सीपीयू और जीपीयू के बीच डेटा स्थानांतरित कर रहा है। यदि आपको बाहरी दृश्य में सभी ऑब्जेक्ट्स/कोर्सेस के उदाहरण के लिए केवल 1/4 स्थानांतरित करने की आवश्यकता है, तो फ्रस्टम कूलिंग एक अच्छा प्रदर्शन बढ़ावा दे सकती है।

3

सबसे तेज़ वस्तु वह है जिसे आपको आकर्षित करने की आवश्यकता नहीं है।

सामान्यतः, उन वस्तुओं के लिए जो पहले से ही सरल नहीं हैं, आप एक सरलीकृत, रूढ़िवादी बाध्यकारी मात्रा प्रदान करेंगे। इस तरह, आप ड्राइंग वस्तुओं कि एक दूसरे के पीछे छिपने वाले रोड़ा culling कहा जाता है से बचना एक जटिल वस्तु में हर त्रिकोण के साथ काम कर के बिना मारने छिन्नक कर सकते हैं ..

। ऑक्लूजन कूलिंग आमतौर पर फ्रस्टम कूलिंग से अधिक जटिल होती है; हालांकि, ध्यान दें कि यह अभी भी एक ही सरलीकृत बाउंडिंग वॉल्यूम का उपयोग कर सकता है।

3

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

वहाँ भी मारने का सामना करना पड़ता है कि त्रिकोण को हटा (या जो भी) है कि दर्शक से दूर का सामना कर रहे है, लेकिन उस छिन्नक को मारने से अलग है।

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