सबसे पहले, आपको शायद हर समय वीबीओ का उपयोग करना चाहिए। छोटी और बड़ी वस्तुओं के लिए।
फिर, दूसरा मुद्दा "कई अलग-अलग वस्तुओं को एक बड़ी वस्तु में कैसे जोड़ना है?" - इसलिए ओपनजीएल कॉल की संख्या को कम करने के लिए। आम तौर पर, एक ही बनावट (सामग्री), सामग्री सेटिंग्स और शेडर्स का उपयोग करने वाली वस्तुओं को जोड़ा जा सकता है। जैसे यदि आपके पास चारों ओर समान समान क्रेट्स हैं, तो उन्हें कई बड़े "क्रेट ढेर" में संयोजित करने का अर्थ हो सकता है।
यदि कोई वस्तु त्रिकोण सूची है, तो संयोजन आसान है - बस स्रोत सूचियों में से एक बड़ी त्रिकोण सूची बनाएं। यदि कोई ऑब्जेक्ट त्रिकोण स्ट्रिप है, तो आपको स्ट्रिप्स में शामिल होने के लिए "degenerate त्रिकोण" का उपयोग करना होगा (यह एक ऑब्जेक्ट के लिए भी बहुत उपयोगी अनुकूलन है, अगर इसे एक स्ट्रिप के रूप में प्रदर्शित नहीं किया जा सकता है)।
एक "अपरिवर्तनीय त्रिकोण" एक त्रिभुज है जिसमें दो या तीन समान वर्टेक्स सूचकांक होते हैं। ग्राफिक्स हार्डवेयर उन्हें पहचान सकते हैं और उन्हें बहुत तेज़ी से छोड़ सकते हैं।
तो यदि आपके पास है, उदा। कुल छः शिखर के लिए प्रत्येक एक त्रिकोण के साथ दो स्ट्रिप्स।
स्ट्रिप्स के मूल त्रिकोण सूचकांक होगा:
1) 0, 1, 2
2) 0, 1, 2
अब आप सभी कोने एक साथ शामिल है, तो आप 6 कोने के साथ खत्म।
1) 0, 1, 2 (unchanged)
2) 3, 4, 5
अब तक आपके पास एक वर्टेक्स सरणी है, लेकिन फिर भी दो अलग स्ट्रिप्स हैं। उन्हें डालने पतित त्रिकोण से शामिल होने के लिए है:
1) 0, 1, 2, 2, 2, 3, 4, 5
(मुझे लगता है कि इसके बाद के संस्करण सही है, लेकिन वास्तव में सत्यापित नहीं किया है)
विचार यह है: ऊपर पट्टी के साथ, ग्राफिक्स कार्ड त्रिकोण ड्रा करेंगी इन कोने से बाहर:
0, 1, 2
1, 2, 2 <- degenerate! won't be drawn
2, 2, 2 <- degenerate! won't be drawn
2, 2, 3 <- degenerate! won't be drawn
3, 4, 5
सामान्य स्थिति में, आप या तो इतना है कि त्रिकोण घुमावदार सही रहता है, दो या तीन पतित मूल पट्टी लंबाई के आधार पर त्रिकोण सम्मिलित करने के लिए की है।
मैंने अभी http://craiggiles.wordpress.com/2009/08/03/opengl-es-batch-rendering-on-the-iphone/ पर उल्लिखित एक विधि लागू की है और यह अच्छी तरह से काम करता है। – RandomEtc