यह शब्दावली OpenGL के इतिहास में निहित है। यह याद रखना महत्वपूर्ण है कि अधिकांश GL संस्करणों के लिए जो यहां प्रासंगिक हैं, OpenGL को वृद्धिशील रूप से विकसित किया गया था और एपीआई को बदलने के बजाय पहले से मौजूद एपीआई में नई कार्यक्षमता जोड़कर।
OpenGL के पहले संस्करण में इन ऑब्जेक्ट प्रकारों में से कोई भी नहीं था। ड्राइंग कई glBegin / glEnd कॉल जारी करके हासिल किया गया था, और इस मॉडल के साथ एक समस्या यह थी कि यह फ़ंक्शन कॉल ओवरहेड के संदर्भ में बहुत अक्षम था।
OpenGL 1.1 ने वर्टेक्स एरेज़ की शुरुआत करके इसे संबोधित करने के लिए पहला कदम उठाया। वर्टेक्स डेटा को सीधे निर्दिष्ट करने के बजाय अब आप इसे C / C ++ सरणियों से स्रोत बना सकते हैं - इसलिए नाम। तो एक वर्टेक्स ऐरे सिर्फ इतना है कि - वर्टिकल की एक सरणी और उन्हें निर्दिष्ट करने के लिए जीएल राज्य की आवश्यकता है।
अगला प्रमुख विकास जीएल 1.5 के साथ आया और सिस्टम ("क्लाइंट-साइड") मेमोरी के बजाय जीपीयू मेमोरी में वर्टेक्स एरे डेटा संग्रहीत करने की अनुमति दी। जीएल 1.1 वर्टेक्स ऐरे स्पेसिफिकेशन की एक कमजोरी यह थी कि हर बार जब आप इसे इस्तेमाल करना चाहते थे तो वर्टेक्स डेटा का पूरा सेट जीपीयू में ट्रांसफर करना पड़ता था; यदि यह पहले से ही GPU पर था, तो इस स्थानांतरण को टाला जा सकता था और संभावित प्रदर्शन लाभ हासिल किया जा सकता था।
इसलिए GPU पर इस डेटा को संग्रहीत करने के लिए एक नए प्रकार की GL ऑब्जेक्ट बनाई गई थी। जैसे टेक्सचर ऑब्जेक्ट को टेक्सचर डेटा स्टोर करने के लिए इस्तेमाल किया जाता है, वैसे ही वर्टेक्स बफर ऑब्जेक्ट वेरेक्स डेटा स्टोर करता है। यह वास्तव में एक अधिक सामान्य बफर ऑब्जेक्ट प्रकार का एक विशेष मामला है जो गैर-विशिष्ट डेटा संग्रहीत कर सकता है।
वर्टेक्स बफर ऑब्जेक्ट्स का उपयोग करने के लिए एपीआई पहले से मौजूद वर्टेक्स एरेस एपीआई पर पिग्गी-समर्थित था, यही कारण है कि आप इसमें बाइट ऑफ़सेट्स को पॉइंटर्स में परिवर्तित करने जैसी अजीब चीजें देखते हैं। इसलिए अब हमारे पास एक वर्टेक्स एरेज़ एपीआई है जो सिर्फ स्टेट को स्टोर करता है, जिसमें इन-मेमोरी मेमोरी के बजाय बफर ऑब्जेक्ट्स से डेटा को स्टोर किया जाता है।
यह हमारी कहानी के अंत में हमें लाता है। परिणामी एपीआई काफी वर्बोज़ था जब यह वर्टेक्स ऐरे स्टेट को निर्दिष्ट करने के लिए आया था, इसलिए ऑप्टिमाइज़ेशन का एक अन्य एवेन्यू एक नया ऑब्जेक्ट प्रकार बनाना था, जिसने इस राज्य के सभी को एक साथ इकट्ठा किया, एक ही एपीआई कॉल में कई वर्टेक्स ऐरे राज्य परिवर्तन की अनुमति दी और जीपीयू की अनुमति दी। संभावित रूप से अनुकूलन करने में सक्षम होने के कारण यह जानने में सक्षम है कि समय से पहले किस राज्य का उपयोग किया जाने वाला था।
शीर्ष सरणी ऑब्जेक्ट दर्ज करें, जो इस सब को एक साथ इकट्ठा करता है।
इसलिए, संक्षेप करने के लिए, एक शीर्ष सरणी ने ड्राइंग के लिए राज्य और डेटा (एक सरणी में संग्रहीत) के संग्रह के रूप में जीवन शुरू किया। एक वर्टेक्स बफर जीएल ऑब्जेक्ट प्रकार के साथ इन-मेमोरी एरे स्टोरेज को बदल देता है, वर्टेक्स ऐरे को केवल स्टेट करता है। एक वर्टेक्स ऐरे ऑब्जेक्ट इस राज्य के लिए सिर्फ एक कंटेनर ऑब्जेक्ट है, जिससे इसे आसानी से और कम एपीआई कॉल के साथ बदला जा सकता है।
char* buffer = socketRead();
(pseudocode) जितना ही सरल होता है । दूसरी ओर लॉग, पूरे ऐप जीवनचक्र के माध्यम से रहता है। तो आप कहीं भी एक सरणी बनाएं और सॉकेट को पढ़ना शुरू करें, कभी भी आपको जो डेटा मिलता है, उस सरणी को आप लिख देते हैं, जिससे आपको प्राप्त सभी डेटा की एक साफ सूची मिलती है।