मैं अभी इस ट्यूटोरियल से ओपनजीएल सीखना शुरू कर
रहा हूं : http://openglbook.com/the-book/
मुझे अध्याय 2 मिला है, जहां मैं एक त्रिकोण खींचता हूं, और मैं VAOs को छोड़कर सब कुछ समझता हूं (क्या यह संक्षिप्त रूप से ठीक है?)। ट्यूटोरियल में यह कोड है:
glGenVertexArrays(1, &VaoId);
glBindVertexArray(VaoId);
जबकि मैं समझता हूं कि कोड आवश्यक है, मुझे कोई सुराग नहीं है कि यह क्या करता है। हालाँकि, मैं इस बिंदु से पहले कभी भी VaoId का उपयोग नहीं करता (इसे नष्ट करने के अलावा), कोड इसके बिना काम नहीं करता है। मैं यह मान रहा हूं क्योंकि यह बाध्य होना आवश्यक है, लेकिन मुझे नहीं पता कि क्यों। क्या इस सटीक कोड को बस हर OpenGL कार्यक्रम का हिस्सा होना चाहिए? ट्यूटोरियल VAOs के रूप में बताते हैं:
वर्टेक्स एरे ऑब्जेक्ट (या वीएओ) एक ऑब्जेक्ट है जो बताता है कि कैसे वर्टेक्स बफर ऑब्जेक्ट (या वीबीओ) में वर्टेक्स विशेषताओं को संग्रहीत किया जाता है। इसका मतलब यह है कि VAO, शीर्ष डेटा को संग्रहीत करने वाली वास्तविक वस्तु नहीं है, बल्कि वर्टेक्स डेटा का वर्णनकर्ता है। वर्टेक्स विशेषताओं को glVertexAttribPointer फ़ंक्शन और इसकी दो बहन कार्यों glVertexAttribIPointer और glVertexAttribLPointer द्वारा वर्णित किया जा सकता है, जिनमें से सबसे पहले हम नीचे देखेंगे।
मुझे समझ में नहीं आता कि कैसे VAO शीर्ष गुण का वर्णन करता है। मैंने उन्हें किसी भी तरह से वर्णित नहीं किया है। क्या यह glVertexAttribPointer से जानकारी प्राप्त करता है? मुझे लगता है कि यह होना चाहिए। VAO glVertexAttribPointer से जानकारी के लिए बस एक गंतव्य है?
एक साइड नोट पर, क्या ट्यूटोरियल मैं स्वीकार्य है? वहाँ कुछ भी है जो मैं या एक बेहतर ट्यूटोरियल का पालन करने के लिए देखना चाहिए?