2011-02-03 22 views
9

में मैं कैसे IDirect3DVertexBuffer9 और IDirect3DIndexBuffer9 काम सीखने के लिए कई महीनों के लिए कोशिश की है। मैंने कई किताबें, ई-किताबें और मंच पढ़े हैं और मुझे अभी भी यह काम नहीं है कि वे कैसे काम करते हैं। क्या कोई मुझे समझने में मदद कर सकता है कि वे कैसे काम करते हैं और वे एक साथ कैसे जुड़ते हैं?वर्टेक्स और सूचकांक बफ़र के साथ संघर्ष Direct3D

पीएस: मैंने संबंधित प्रश्नों के माध्यम से खोज करने की कोशिश की है लेकिन मुझे कोई दिलचस्पी नहीं है।

धन्यवाद।

उत्तर

7

IndexBuffers स्मृति & गति अनुकूलन के लिए उपयोग किया जाता है। एक इंडेक्सबफर इंडेक्स की एक सूची है जो वर्टेक्सबफर में शीर्षकों को इंडेक्स करता है।

तो कहते हैं कि मैं 2 त्रिकोण के साथ स्क्रीन पर एक फ्लैट क्वाड रेंडर करने के लिए जा रहा हूँ। प्रत्येक त्रिकोण 3 अक्षरों को लेता है, इसलिए केवल एक वर्टेक्सबफर के साथ ट्रैक्टर प्रस्तुत करने के लिए मुझे 6 कोष्ठक की आवश्यकता होगी।

अब अगर मैं एक IndexBuffer का उपयोग हालांकि, मैं केवल 4 कोने (ट्रैक्टर के प्रत्येक कोने के लिए एक) का उपयोग करने की आवश्यकता होगी। लेकिन मुझे प्रत्येक सूचकांक के लिए 6 सूचकांक, 3 सूचकांक की आवश्यकता होगी, जो कोने के कोने में से एक को इंडेक्स करेगा।

बड़े मॉडलों पर इस स्मृति & बचाने के बहुत गति में सुधार GPU कम कोने प्रसंस्करण किया जाएगा के रूप में कर सकते हैं।

यहां कुछ अच्छे नमूना कोड के साथ एक साइट है :: http://www.codesampler.com/dx9src.htm वहां "इंडेक्सेड ज्यामिति" नामक नमूना डाउनलोड करें।

+0

धन्यवाद, zezba9000। बस मुझे क्या जानने की जरूरत है। एक बार फिर धन्यवाद। – DeadCapacitor

20

इससे पहले मुझे भ्रमित कर दिया गया। इसके बारे में सोचने का एक और तरीका दृष्टि से है (मैं एक बड़ा दृश्य विचारक हूं इसलिए शायद यह आपकी भी मदद करेगा)।

zezba के उदाहरण पर विस्तार, मान लें कि हम दो त्रिकोण का उपयोग कर एक ट्रैक्टर आकर्षित करने के लिए चाहते हैं:

Quad

के रूप में s/वह ने कहा, यह सिर्फ चार कोने के साथ किया जा सकता है। तो आपके वर्टेक्स बफर में केवल चार प्रविष्टियां होंगी। मैं इन {ए, बी, सी, डी} का लेबल लगा देंगे:

Quad with vertices: A, B, C, D

हालांकि, बाद से त्रिकोण के साथ ग्राफिक्स प्रोसेसर सौदा, हम अभी भी कैसे त्रिकोण बनाने के लिए GPU बताने के लिए तीन कोने के समूह परिभाषित करने की जरूरत पहले से परिभाषित शिखर की सूची में से बाहर। यह इंडेक्स बफर का उद्देश्य है।

आप बस शिखर बफर कि त्रिकोण को परिभाषित करता है जांच सूचकांक की एक सूची के रूप में सूचकांक बफर के बारे में सोच सकते हैं। इसलिए चूंकि हम दो त्रिकोण बना रहे हैं, और प्रत्येक त्रिभुज को तीन शीर्षकों की आवश्यकता होती है, इंडेक्स बफर को SIX प्रविष्टियों की आवश्यकता होगी।

आदेश यहां कुछ भी मायने रखता है। मैं उसमें बहुत ज्यादा नहीं जाऊंगा लेकिन मान लीजिए कि मैं अपने त्रिकोण काउंटर घड़ी के अनुसार को परिभाषित करना चाहता हूं। मैं के रूप में {बी, ए, सी} और {बी, सी, डी} मेरी दो त्रिकोण को परिभाषित करेंगे। एकाधिक त्रिकोणों के लिए शिखर का पुन: उपयोग करना बिल्कुल ठीक है।

तो मेरी बफ़र्स अंत इस तरह लग रही:

Quad with vertex and index buffers

आशा इस मदद करता है।

+0

इससे बहुत मदद मिलती है। धन्यवाद, हेलवुड। और हाँ, मैं भी एक दृश्य विचारक हूँ :) – DeadCapacitor