2013-03-18 8 views
6

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

मान लीजिए कि आप कि लाइनों की एक श्रृंखला बनाने के शिखर पदों की एक सूची परिभाषित कर रहे हैं, और प्रत्येक लाइन के साथ आप एक ID को संबद्ध करना चाहते हैं करते हैं:

यहाँ मैं क्या मतलब का एक उदाहरण है। तो, आप दो vbos बनाते हैं कि प्रत्येक घर उन गुणों में से एक से संबंधित डेटा (या तो सभी कशेरुक पदों या सभी कशेरुक आईडी)। परंपरागत रूप से, इसका मतलब है कि प्रत्येक vbo लाइन एक्स 2 की संख्या के आकार (तत्वों में) होना चाहिए (क्योंकि प्रत्येक बिंदु में दो पंक्तियां होती हैं)। इसका मतलब है कि मैं एक पंक्ति में प्रत्येक बिंदु के लिए एक ही आईडी मान डुप्लिकेट कर रहा हूं।

इसके बजाय मैं क्या करना चाहता हूं यह निर्दिष्ट करता है कि आईडी प्रत्येक 2 तत्वों के लिए वर्टेक्स स्थिति बफर अग्रिम के लिए 1 तत्व अग्रिम करती है। मुझे पता है कि इसके लिए मेरी वर्टेक्स स्थिति बफर पहले घोषित किया गया है (ताकि मैं इसे ओपनजीएल को बताने के लिए संदर्भित कर सकूं कि आईडी बफर को कितनी बार अग्रिम करना है) लेकिन ऐसा लगता है कि यह संभव होगा। हालांकि, मुझे ओपनजीएल विनिर्देश में कोई भी फ़ंक्शन नहीं मिल रहा है जो इस तरह के पैंतरेबाज़ी की अनुमति देता है।

उत्तर

2

जो आप चाहते हैं वह ओपनजीएल में आम तौर पर संभव नहीं है। यह प्रभावी रूप से multi-indexed rendering का एक संयोजित रूप है, इसलिए आपको इसे प्राप्त करने के लिए उन तकनीकों में से एक का उपयोग करना होगा।

+0

क्या इस मामले में लाइन एक सेगमेंट को आकर्षित करने के लिए 'glmultiDrawArraysIndirect() 'का उपयोग करना संभव है, आईडी VBO पर विशेषता divisor 1 का उपयोग करें और प्रति इंडेक्स को बढ़ाने के लिए अप्रत्यक्ष कमांड संरचना के' बेस इंडेक्स 'भाग का उपयोग करें आईडी वीबीओ में आकर्षित करें? यह शायद GPU स्मृति में अधिक डेटा रखेगा लेकिन सिद्धांत में संभव होगा? – Samik

+0

यह उस विशिष्ट मामले के लिए काम करेगा, लेकिन * सामान्य * में नहीं। –

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