तो मैं समझता हूं कि वर्टेक्स बफर ऑब्जेक्ट का उपयोग कैसे करें, और यह तत्काल मोड ड्राइंग पर एक बड़ा प्रदर्शन वृद्धि प्रदान करता है। मैं बहुत सारे 2 डी क्वाड (स्प्राइट्स) खींचेगा, और मैं जानना चाहता हूं कि क्या मुझे प्रत्येक के लिए एक वीबीओ बनाना है, या सभी डेटा रखने के लिए एक वीबीओ बनाना है?मैं कितने वीबीओ उपयोग करता हूं?
उत्तर
आपको प्रत्येक स्प्राइट/ट्रैक्टर के लिए एक नया वीबीओ उपयोग नहीं करना चाहिए। तो उन्हें एक ही वीबीओ में डालने से आपके मामले में बेहतर समाधान होगा।
लेकिन आम तौर पर मुझे नहीं लगता कि इसका उत्तर एक वाक्य में दिया जा सकता है।
प्रत्येक Quad के लिए एक नया VBO बनाने से आपको एक वास्तविक प्रदर्शन वृद्धि नहीं देंगे। यदि आप ऐसा करते हैं, तो वीबीओ स्विच करने के लिए glBindBuffer
कॉल के साथ बहुत समय बर्बाद हो जाएगा। हालांकि यदि आप वीबीओ बनाते हैं जिसमें बहुत अधिक डेटा है तो आप अन्य समस्याओं में भाग सकते हैं।
छोटे VBOs:
- अक्सर अपने कार्यक्रम कोड में संभाल करने के लिए आसान कर रहे हैं। आप प्रस्तुत करने वाले प्रत्येक ऑब्जेक्ट के लिए एक नया VBO का उपयोग कर सकते हैं। इस तरह आप अपनी दुनिया को अपनी दुनिया में बहुत आसान बना सकते हैं
- यदि वीबीओ बहुत छोटे हैं (केवल कुछ त्रिकोण) तो आपको अधिक लाभ नहीं मिलता है। समय का एक बहुत बफ़र्स के बीच बफर स्विचिंग (और शायद स्विचिंग shaders/बनावट)
बड़े VBOs साथ खो जाएगा:
- आप सर्वश्रेष्ठ प्रदर्शन के लिए एक एकल
drawArrays()
कॉल के साथ वस्तुओं की टन प्रदान कर सकते हैं। - अपने डेटा के आधार पर यह संभव है कि आप एक ही VBO में वस्तुओं का एक बहुत कुछ के प्रबंधन के लिए भूमि के ऊपर बनाने (क्या हुआ अगर आप इन वस्तुओं में से एक को स्थानांतरित करने और किसी अन्य वस्तु बारी बारी से करना चाहते हैं?)।
- अपने VBOs बहुत बड़ी यह संभव है कि वे VRAM में ले जाया जा सकता है, तो
निम्न लिंक आप मदद कर सकते हैं:
एक का उपयोग करें (या की एक छोटी संख्या) VBO (रों) सभी धारण करने के लिए/अपने ज्यामिति के सबसे।
आम तौर पर कम एपीआई बेहतर, अपने दृश्य प्रस्तुत करना लेता है कहता है।
यह भी निर्भर करता है कि आप क्या करना चाहते हैं d उन sprites के साथ करते हैं?
क्या वे गतिशील हैं? क्या आप केवल क्वाड का केंद्र बदलना चाहते हैं या शायद सभी चार बिंदुओं को संशोधित करना चाहते हैं?
यह महत्वपूर्ण है अपने डेटा तो गतिशील हैं, सबसे आसान तरीका में, आप प्रत्येक फ्रेम GPU के लिए CPU से स्थानांतरित करना होगा क्योंकि। शायद आप GPU पर सभी गणना कर सकते हैं - उदाहरण के लिए ज्यामिति शेडर्स का उपयोग करके?
इसके अलावा बहुत ही सरल quads/स्प्राइट के लिए एक GL_POINT_SPRITE उपयोग कर सकते हैं। इसके साथ ही पूरे क्वाड के लिए केवल एक कशेरुक भेजने की आवश्यकता है। लेकिन दोष यह है कि इसे घुमाने में मुश्किल है ...
- 1. एंड्रॉइड मैं कितने धागे जा सकता हूं?
- 2. ओपनजीएल के वीबीओ
- 3. वर्टेक्स बफर ऑब्जेक्ट (वीबीओ)
- 4. मैं कब्रिस्तान का उपयोग करता हूं और कब नहीं करता?
- 5. मैं समसामयिक रूप से कितने धागे चला सकता हूं?
- 6. वीएओ/वीबीओ की ओपनजीएल संरचना?
- 7. कितने System.Timers.Timer उदाहरण मैं बना सकता हूं? मैं कितना दूर स्केल कर सकता हूं?
- 8. मैं traceView का उपयोग करता हूं और मैं android.view.ViewRoot.handleMessage 76.4%
- 9. मैं डेक से कितने तत्व पॉप() पॉप कर सकता हूं?
- 10. ओपनजीएल वीबीओ डेटा अपडेट करने
- 11. वीबीओ का सही ढंग से उपयोग करना सीखना
- 12. मैं बैश फ़ंक्शन में कितने तर्क दे सकता हूं?
- 13. सी प्रीप्रोसेसर कितने पास करता है?
- 14. वैकल्पिकता का उपयोग करके मैं कितने नियमित अभिव्यक्तियों को एक साथ जोड़ सकता हूं?
- 15. मैं TCheckListBox पर एकाधिक कॉलम का उपयोग कैसे करता हूं?
- 16. मैं कौन सा पायथन ट्राव क्लासिफायर का उपयोग करता हूं?
- 17. मैं उन इंजनों के लिए समर्थन कैसे हटा सकता हूं जिनका मैं उपयोग नहीं करता हूं?
- 18. आधुनिक ओपनजीएल: वीबीओ, जीएलएम और मैट्रिक्स स्टैक्स
- 19. क्या मैं संग्रहीत प्रक्रियाओं का उपयोग करता हूं तो क्या मैं एसक्यूएल इंजेक्शन से प्रतिरक्षा करता हूं?
- 20. एंटिटी फ्रेमवर्क का उपयोग करके, मैं कई रिश्तेदारों को कितने प्रतिबिंबित करता हूं और ऐसी नई इकाइयों को जोड़ता हूं जो एक नई इकाई के लिए मौजूद हैं?
- 21. मैं पॉपअपमेनू में ShareActionProvider का उपयोग करता हूं, लेकिन दो पॉपअपमेनू दिखाता हूं?
- 22. आईफोन सिम्युलेटर कितने अंतरराष्ट्रीय भाषाओं का समर्थन करता है?
- 23. ओपनजीएल (ईएस 2.0) एक साझा मेमोरी आर्किटेक्चर में वीबीओ प्रदर्शन
- 24. ओपनजीएल ईएस 2.0 और वर्टेक्स बफर ऑब्जेक्ट्स (वीबीओ)
- 25. यदि मैं उपयोग करता हूं: class_name विशेषता है_ऑन में, मैं माइग्रेशन में क्या डालूं?
- 26. जब मैं आईओसी का उपयोग करता हूं तो मैं ऑब्जेक्ट निपटान का प्रबंधन कैसे करूं?
- 27. कितने हैश बाल्टी
- 28. मैं कोड कैसे उत्सर्जित करता हूं और इसे एक लोड असेंबली में इंजेक्ट करता हूं?
- 29. सी ++ में बढ़ावा देने के द्वारा मैं कितने धागे पैदा कर सकता हूं?
- 30. मैं कैसे देख सकता हूं कि ड्रॉपडाउन मेनू में कितने विकल्प हैं?