2013-07-11 9 views
9

वर्तमान में, मेरे पास RenderObject कक्षाओं का संग्रह है जिसमें एक बनावट, एक वीएओ और एक वीबीओ शामिल है। इन राज्यों में से हजारों वस्तुओं को चित्रित करने के कारण सभी राज्य स्विचिंग के कारण प्रदर्शन पेनल्टी होती है और glDrawArrays पर छोटी संख्या में त्रिभुजों के साथ कॉल किया जाता है।क्या आपको प्रत्येक वीबीओ के लिए वीएओ की आवश्यकता है?

तो अब मैं अपना कार्यान्वयन बदलने जा रहा हूं ताकि मैं 1 एमआईबीबी वीबीओ की एक श्रृंखला तैयार कर सकूं (एक बार शुरू हो जाने के बाद, एक दूसरा 1 एमआईबीबी वीबीओ बनाएं और इसे भरना जारी रखें)। क्या मुझे प्रत्येक वीबीओ के लिए एक अलग वीएओ चाहिए? वीबीओ पहले से ही इंटरलेव्ड वर्टेक्स डेटा का उपयोग करता है, इसलिए मैं चरम, मानक, बनावट कॉर्ड इत्यादि के लिए एकाधिक वीबीओ का उपयोग करने के बारे में बात नहीं कर रहा हूं।

उत्तर

10

मुझे लगता है कि कुछ भ्रम हो सकता है। वेरटेक्स अट्रिबल्स प्रति कशेरुक तत्वों की संख्या को संदर्भित करता है जिन्हें आप एक कशेरुक के साथ पारित कर सकते हैं (मानक एक होगा, यूवी दूसरे, आदि)। आपके कार्यान्वयन में, यह 16 तक सीमित है जिसे आप अधिक से अधिक नहीं होने जा रहे हैं।

वीएओ एक एकल ड्रॉ कॉल जारी करने के लिए आवश्यक राज्य की जानकारी संग्रहीत करता है। इसमें यह कॉलिंग शामिल है कि उस कॉल के लिए कौन से वीबीओ को बाध्य करने की आवश्यकता है। यह देखते हुए कि प्रत्येक वीबीओ को अपने स्वयं के अलग ड्रॉ कॉल में खींचा जाना चाहिए, मुझे यह भी लगता है कि आपको प्रत्येक के लिए सेटअप जानकारी स्टोर करने के लिए वीएओ की आवश्यकता है।

यहाँ एक अच्छा विवरण है:

http://ogldev.atspace.co.uk/www/tutorial32/tutorial32.html

+0

अच्छा बिंदु, धन्यवाद, मैं शीर्ष attrib सामान हटा दिया है। –

+0

@ मार्क Ingram मैं इसे अन्य पाठकों के लिए प्रश्न में रखूंगा। –

+1

मैं बहुत अधिक 100% हूं कि वीएओ वीबीओ बाइंडिंग पॉइंट (ARRAY_BUFFER_BINDING) को बाध्य नहीं करता है, अगर आप 3.3 कोर स्पेक पीडीएफ में वीएओ स्टेट टेबल पेज देखते हैं, तो यह स्पष्ट रूप से अगले पीपी पर नहीं कहता है " वीएओ राज्य "। इसके अलावा, https://twitter.com/id_aa_carmack/status/409495250646753280 https://www.opengl.org/registry/doc/glspec33.core.20100311.withchanges.pdf जांचें, पीपी 281 और 282 देखें। मुझे लगता है कि आपके द्वारा लिंक किया गया ट्यूटोरियल सिर्फ काम करता है क्योंकि यह तत्व सरणी बफर को स्रोत करता है जो कि वही एक बार फिर से उपयोग किया जाता है, या क्योंकि तत्व सरणी बफर जो VBO का उपयोग करने के लिए बनाए रखता है, सुनिश्चित नहीं करता है। – Amadiro

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