2012-01-11 17 views
5

मैं glBufferData पर एक बफर बनाने या संशोधित करके अपना दृश्य प्रस्तुत कर रहा हूं। वेरटेक्स ऐरे ऑब्जेक्ट्स की मेरी समझ यह है कि वे मुझे उपयोग कर रहे सभी वीबीओ के मैन्युअल बाध्यकारी को छोड़ने की अनुमति देते हैं। क्या यह अभी भी मामला है जब मैं अपना बफर हर समय अद्यतन करता हूं?अगर मुझे वीबीओ बदलने की ज़रूरत है तो क्या मुझे अपने वीएओ का पुनर्निर्माण करने की ज़रूरत है?

क्या मैं अपने वीएओ को बांध सकता हूं, glBufferData को कॉल और इंडेक्स अपडेट करने के लिए कॉल कर सकता हूं (इस समय मेरे पास केवल दो वीबीओ हैं), और फिर प्रस्तुत करें?

क्या मैं वीबीओ के साथ मेमोरी मैपिंग का उपयोग कर सकता हूं? तो मैं वीएओ बांध सकता हूं, बफर संशोधित कर सकता हूं, फिर प्रस्तुत कर सकता हूं?

वीएओ वास्तव में क्या करता है? क्या यह कार्य केवल एक शॉर्टकट का है जो मेरे वीबीओ के वर्टेक्स विशेषताओं के बाध्यकारी को स्टोर और स्वचालित करता है? क्या यह डेटा या बाइंडिंग का स्वामित्व लेता है?

उत्तर

3

आपको शायद इसका परीक्षण करना होगा, लेकिन मेरी समझ से वीबीओ को उत्पन्न होने पर आईडी दी जाती है और वीएओ केवल वीबीओ आईडी के साथ प्रत्येक वर्टेक्स अट्रिब का संदर्भ देता है। आपको glBufferData या glBufferSubData पर कॉल करने में सक्षम होना चाहिए। मुझे यकीन नहीं है कि ड्रॉ कॉल करने से ठीक पहले मेमोरी मैपिंग काम करेगी, लेकिन आप निश्चित रूप से वीएओ को बाध्य करने और ड्राइंग के बीच चीजें कर सकते हैं। एक वीएओ वीबीओ को लॉक नहीं करता है या उन तक पहुंच प्रतिबंधित नहीं करता है।

सामान्य रूप से, एक वीएओ केवल गुणों और उनकी सभी सेटिंग्स (बाध्य वीबीओ, स्ट्रॉइड, ऑफ़सेट इत्यादि) को स्टोर करता है और बाध्य होने पर विशेषताओं को स्वचालित रूप से बांधता है। जब तक आप glBindVertexArray(0); पर कॉल नहीं करते हैं, तब तक सभी वर्टेक्स गुण बाध्य VAO से बंधे होते हैं।

+0

तो वीएओ प्रभावित नहीं करता है कि वीबीओ मैंने किस बाध्य किया है? मुझे उनसे बांधना होगा और उन पर 'glbufferData' को कॉल करना होगा। –

+0

@ रॉबर्ट रूहानी यह मानते हुए कि आपका वर्टेक्स लेआउट अधिकांश ड्रॉ के लिए समान है, मुझे यह बहुत हास्यास्पद लगता है कि आपको प्रत्येक वीबीओ के लिए वर्टेक्स विशेषताओं का एक अलग सेट स्टोर करना होगा। मैंने इससे बचने की कोशिश करने के लिए थोड़ी देर की तलाश की लेकिन कहीं भी नहीं मिला। – Zebrafish

+0

@TitoneMaurice स्थान की मात्रा न्यूनतम (बाइट्स के क्रम में) होनी चाहिए, अतिरिक्त विशेषताओं को बांधने के लिए अतिरिक्त जीएल कॉल आपकी बाधा नहीं होनी चाहिए। सबसे नजदीकी चीज जो आप चाहते हैं वह इंस्टॉलेशन कर रही है, मेरी राय में कुछ भी अनावश्यक/समयपूर्व अनुकूलन होगा। –

संबंधित मुद्दे