2012-03-24 13 views
9

मैं एक प्रोग्राम लिखने की कोशिश कर रहा हूं जो वीडियो कैमरे के फ्रेम को एक ट्रैक्टर में लिखता है। मैंने ट्यूटोरियल को समझाया कि फ्रेमबफर के साथ तेजी से हो सकता है, लेकिन अभी भी सीखना कि यह कैसे करना है। लेकिन फिर फ्रेमबफर के अलावा, मैंने पाया कि रेंडरबफर भी हैं।जीएलएसएल रेंडरबफर वास्तव में आवश्यक है?

सवाल यह है कि, यदि उद्देश्य केवल एक क्वाड में एक बनावट लिखना है जो स्क्रीन भर जाएगा, तो क्या मुझे वास्तव में एक रेंडरबफर चाहिए?

मैं समझता हूं कि रेंडरबफर गहराई से परीक्षण के लिए हैं, जो मुझे लगता है कि केवल पिक्सेल की जेड स्थिति की जांच के लिए है, इसलिए मेरे परिदृश्य के लिए रेंडर बफर बनाने के लिए मूर्खतापूर्ण होगा, सही?

उत्तर

10

framebuffer object छवियों को छूने के लिए एक जगह है ताकि आप उन्हें प्रस्तुत कर सकें। कलर बफर, गहराई बफर, आदि सभी एक फ्रेमबफर ऑब्जेक्ट में जाते हैं।

एक renderbuffer एक बनावट की तरह है, लेकिन दो महत्वपूर्ण अंतर के साथ:

  1. यह हमेशा 2 डी है और कोई मिपमैप है। तो यह हमेशा बिल्कुल 1 छवि है।
  2. आप एक रेंडरबफर से पढ़ नहीं सकते हैं। आप उन्हें एक एफबीओ से जोड़ सकते हैं और उन्हें प्रस्तुत कर सकते हैं, लेकिन आप उन्हें बनावट एक्सेस या कुछ के साथ नमूना नहीं दे सकते।

तो आप दो अधिकतर अलग अवधारणाओं के बारे में बात कर रहे हैं। Renderbuffers "गहराई परीक्षण के लिए" होने के लिए नहीं है। यह रेंडरबफर के लिए एक आम उपयोग केस है, क्योंकि यदि आप एक बनावट के रंगों को प्रतिपादित कर रहे हैं, तो आप आमतौर पर गहराई की परवाह नहीं करते हैं। आप को की गहराई की आवश्यकता है क्योंकि आपको छुपे हुए सतह हटाने के लिए गहराई से परीक्षण की आवश्यकता है। लेकिन आपको उस गहराई से नमूना की आवश्यकता नहीं है। तो गहराई बनावट बनाने के बजाय, आप गहराई से रेंडरबफर बनाते हैं।

लेकिन रेंडरबफर गहराई प्रारूपों के बजाय रंगों का भी उपयोग कर सकते हैं। आप उन्हें बनावट के रूप में संलग्न नहीं कर सकते हैं। आप अभी भी उनसे ब्लाइट कर सकते हैं, और आप उन्हें अभी भी glReadPixels के साथ पढ़ सकते हैं। आप सिर्फ एक शेडर में से नहीं पढ़ सकते हैं।

अजीब तरह से पर्याप्त है, यह आपके सवाल का जवाब देना कुछ नहीं करता है:

सवाल यह है कि, अगर उद्देश्य केवल एक ट्रैक्टर में एक बनावट है कि स्क्रीन भर जाएगा लिखने के लिए, मैं वास्तव में एक renderbuffer की क्या ज़रूरत है है ?

मुझे नहीं लगता कि आपको किसी फ्रेमबफर या किसी भी प्रकार का रेंडरबफर क्यों चाहिए। एक बनावट एक बनावट है; बस एक बनावट क्वाड खींचें।

+0

कारण मुझे फ्रेमबफर का उपयोग करने की आवश्यकता है क्योंकि जैसा कि मैंने कुछ पृष्ठों में पढ़ा है जो पिंग-पोंग प्रतिपादन करने का एकमात्र तरीका है। और मेरा इरादा कई फ़िल्टर-प्रभावों को लागू करने के लिए ऐसी तकनीक का उपयोग करना है, इसलिए मुझे आवश्यकतानुसार कुछ अन्य प्रभावों को पारित करने के लिए, एक टुकड़े टुकड़े के माध्यम से पारित होने के बाद बनावट के आउटपुट का पुन: उपयोग करने का एक तरीका चाहिए। – PerracoLabs

+1

@ user848253: भविष्य में, न्यूनतम जानकारी प्रदान करने के बजाय, यदि आप वास्तव में क्या कर रहे हैं, तो आप अधिक सटीक जानकारी प्राप्त करने की अधिक संभावना रखते हैं। आपने अपने प्रश्न में जो कुछ कहा है वह यह है कि आप एक पूर्ण-स्क्रीन क्वाड के रूप में एक बनावट लिखने की कोशिश कर रहे हैं। –

+2

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

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