2009-02-27 12 views
5

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

स्पष्टीकरण के लिए, यह मुद्दा स्वयं प्रतिबिंबों को प्रतिपादित नहीं कर रहा है, लेकिन जब वे दिखाई नहीं देंगे तो उन्हें छुपाएं।

कोई विचार?

मैं बुनियादी सामने वाली चेहरा/वापस चेहरा निर्धारण करते हैं:

उत्तर

9

पहले परिलक्षित दृश्य प्रस्तुत करें; glCopyTexImage2D का उपयोग कर बनावट में कॉपी करें; फ्रेमबफर साफ़ करें; प्रतिबिंबित सतह पर कॉपी किए गए बनावट को लागू करने के लिए दृश्य को उचित बनाएं।

2

मैं यहाँ प्रतिबिंब के लिए एक जवाब नहीं है, लेकिन मैं कैसे स्टेंसिल बफर के बिना छाया कर रहा हूँ शायद यह आप एक विचार दे देंगे है, प्रकाश स्रोत के दृष्टिकोण से जाल के। मैं फिर उन सभी किनारों की एक सूची प्राप्त करता हूं जो एक फ्रंट त्रिकोण को पीछे त्रिकोण से जोड़ते हैं। मैं इस एज सूची को लाइन "लूप" के रूप में मानता हूं। मैं ऑब्जेक्ट-लाइट किरण के साथ इस लूप के शिखर को प्रोजेक्ट करता हूं जब तक कि यह जमीन को छेड़छाड़ न करे। इन चौराहे बिंदुओं का उपयोग जमीन के समान विमान पर 2 डी बहुभुज की गणना करने के लिए किया जाता है। मैं फिर उस पॉली को त्रिकोण में बदलने के लिए एक टेस्सेलेशन एल्गोरिदम का उपयोग करता हूं। (यह तब तक ठीक काम करता है जब तक आपकी रोशनी स्रोत या ऑब्जेक्ट्स अक्सर स्थानांतरित नहीं होते हैं।)

एक बार मेरे पास त्रिभुज होने के बाद, मैं उन्हें थोड़ी ऑफसेट के साथ प्रस्तुत करता हूं जैसे कि गहराई बफर छाया को पार करने की अनुमति देगा। वैकल्पिक रूप से आप decaling algorithm such as the one in the Red Book का उपयोग कर सकते हैं।

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