2010-09-23 16 views
7

मुझे यकीन नहीं है कि यह करना संभव है, लेकिन यह एक शॉट के लायक है। मैं स्टेंसिल बफर उपयोग कर रहा हूँ इस एल्गोरिथ्म (जब कैमरा मात्रा के बाहर है) का उपयोग कर एक आस्थगित रेंडरर में प्रकाश की मात्रा के लिए ओवरड्रॉ कम करने के लिए:ओपनजीएल स्टैंसिल बफर या ऑपरेशन?

  1. एक सस्ते शेडर का उपयोग करना, गहराई परीक्षण LEQUAL करने के लिए सेट के साथ चेहरे वापस आकर्षित , उन्हें स्टैंसिल बफर में चिह्नित करना।
  2. महंगा प्रकाश शेडर का उपयोग करके, गहरे परीक्षण के साथ गहरे परीक्षण के साथ सामने के चेहरे खींचे।

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

दिमाग में आने वाला समाधान प्रति प्रकाश स्टैंसिल बफर में 1 बिट का उपयोग करना होगा। तो, प्रकाश एन के लिए, सस्ता पास में स्टैंसिल बफर में n वें बिट को चिह्नित करें, फिर महंगी पास के दौरान केवल उस बिट के साथ पिक्सल प्रस्तुत करें।

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

क्या किसी भी तरह से इस या एंडिंग व्यवहार को स्टैंसिल बफर का उपयोग करने का कोई तरीका है? और यदि नहीं, तो प्रकाश खंडों को कुशलता से प्रस्तुत करने के लिए कोई वैकल्पिक दृष्टिकोण है?

उत्तर

6

ऑरिंग अपडेट व्यवहार प्राप्त करने के लिए, glStencilMaskGL_REPLACE के साथ संयुक्त करें। परीक्षण व्यवहार प्राप्त करने के लिए, glStencilFuncmask पैरामीटर GL_EQUAL के साथ संयुक्त पैरामीटर का उपयोग करें। दोनों स्थितियों में, आप ref पैरामीटर glStencilFunc पर 0xff होने के लिए चाहते हैं।

+0

अद्भुत! यही वह है जिसकी तलाश में मैं हूं। आपको बहुत - बहुत धन्यवाद! – Gumgo

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