यहाँ एक सरल लेकिन प्रभावी विवरण है, मूल रूप से एक बफर ऑब्जेक्ट की जानकारी है, जिसे केवल कच्चे डेटा के बिट्स के रूप में व्याख्या की जा सकती है, जो अपने मतलब पर कुछ भी नहीं है, इसलिए यह डेटा है जिसे वास्तव में किसी भी तरह से देखा जा सकता है
i.e float vbo[]={1.0,2.0,34.0...}
और जिस तरह से ओपनजीएल को काम करने के लिए डिज़ाइन किया गया था वह यह है कि आपको निश्चित रूप से यह देखना होगा कि आपके डेटा को विभिन्न शेड्स में भेजना कैसा लग रहा है
इसमें आपको यह भी परिभाषित करना है कि यह उस डेटा को कैसे पढ़ेगा, यह किस प्रारूप में है, और इसके साथ क्या करना है और इसका उपयोग कैसे किया जाएगा और किस लिए, यह सभी जानकारी VAO में संग्रहीत है।
उदाहरण के लिए आप इस तरह से एक सरणी में संग्रहीत डेटा की घोषणा कर सकते हैं float vbo = {11.0,2.0,3.0,4.0}
इस बिंदु पर आगे क्या आवश्यक है, वीएओ में वीबीओ से उस डेटा की व्याख्या कैसे की जाती है, और इसका क्या अर्थ है इस प्रकार है
VAO को 2 फ़्लोट प्रति वर्टेक्स पढ़ने के लिए सेट किया जा सकता है (जो दो आयाम x, y के साथ 2 वैक्टर बना देगा) या आप इसे 4 आयामों जैसे x, y, z, w आदि के साथ 1 वेक्टर के रूप में व्याख्या करने के लिए कह सकते हैं।
लेकिन उस डेटा की अन्य विशेषताओं को भी परिभाषित किया जाता है और VAO में संग्रहीत किया जाता है जैसे कि डेटा प्रारूप (इसके बावजूद कि आपने फ्लोट की एक सरणी घोषित की है, तो आप इसे एक पूर्णांक के रूप में पढ़ने के लिए shader को बता सकते हैं, बेशक सिस्टम कच्चे डेटा को परिवर्तित कर रहा है फ्लोट से पूर्णांक तक की प्रक्रिया और नियमों का अपना सेट है कि ऐसी परिस्थितियों में क्या करना है)
तो मूल रूप से VBO डेटा है, और VAO उस डेटा की व्याख्या करने का तरीका संग्रहीत करता है, क्योंकि shaders और OpenGL सर्वर को बहुत ही नकचढ़ा बनाया गया है और इसे कैसे संसाधित किया जाए और इसके साथ क्या करना है, यह तय करने से पहले सब कुछ जानना आवश्यक है। इदर रखना
बेशक, यह वास्तव में बुरा नहीं है, यह वास्तव में सबसे अधिक कुशल लग रहा है क्योंकि इसे ग्राफिक्स सर्वर मेमोरी पर उस डेटा को संग्रहीत करने की आवश्यकता है ताकि इसे सबसे कुशल और तेज प्रसंस्करण प्राप्त हो जाए (जब तक कि यह तय न हो जाए कि ऐसा करने की आवश्यकता नहीं है डेटा को इस तरह से संसाधित नहीं किया जाना चाहिए और कुछ अन्य जानकारी के लिए उपयोग किया जाता है जो अक्सर पहुंच नहीं होती है), और इसलिए क्यों डेटा के साथ क्या करना है और इसे कैसे संसाधित करना है इसका विवरण VAO में संग्रहीत किया जाना आवश्यक है, इसलिए VAO हेडर की तरह होता है और VBO शुद्ध कच्चे डेटा की तरह होता है जिसे हेडर उपयोग करता है और परिभाषित करता है (इस मामले में शेड वर्टेक्स विशेषताओं के पास जाता है) इस अपवाद के साथ कि वीबीओ केवल एक वीएओ द्वारा उपयोग किए जाने के लिए सीमित नहीं है, यह इस्तेमाल किया जा सकता है और पुन: उपयोग और कई VAO के उदाहरण के लिए बाध्य है:
आप क्या कर सकते हैं कि आप एक बफर ऑब्जेक्ट को VAO1 से बाँध सकते हैं और (अलग-अलग) उसी बफर ऑब्जेक्ट को VAO2 से बाँध सकते हैं, प्रत्येक को अलग-अलग तरीके से व्याख्या करने के लिए ताकि यदि आपका शेडर डेटा को प्रोसेस करने के लिए है, जिसके आधार पर VAO वह है बाध्य होने पर यह उसी कच्चे डेटा को भिन्न रूप से फ़्रैम्फ़र (विंडो के लिए ड्राइंग पिक्सेल) के रूप में संसाधित करेगा, जिसके परिणामस्वरूप एक ही डेटा का अलग-अलग प्रदर्शन होगा, जो इस बात पर आधारित होगा कि आपने VA में इसके उपयोग को कैसे परिभाषित किया है।