2010-02-10 16 views
5

मुझे आईफोन 3 जी (ओपनजीएल ES1.1) में एंटीअलाइजिंग की आवश्यकता है, आईफोन 3 जी ओपनजीएल ES.2.0 के साथ नहीं। मैंने 3 डी मॉडल खींचा है और अगला है: मॉडल के किनारों पर पिक्सेल दांतों की तरह दिखते हैं।एंटीअलाइजिंग आईफोन ओपनगलस

मैंने बनावट के लिए कोई भी फ़िल्टर सेट करने का प्रयास किया है, लेकिन यह फ़िल्टर केवल बनावट को बेहतर दिखता है।

मैं अच्छा एंटीअलाइजिंग कैसे कर सकता हूं? क्या मुझे त्रिभुज ड्राइंग के लिए किसी भी चिकनी का उपयोग करना चाहिए? यदि हां, तो ओपनजीएल ES1.1 में यह कैसे संभव है?

धन्यवाद।

उत्तर

4

आप एक बड़े एफबीओ में प्रस्तुत कर सकते हैं और उसके बाद इसे एक वर्ग पर बनावट के रूप में उपयोग कर सकते हैं।

एक स्पष्टीकरण के लिए this आलेख देखें।

+0

क्या आप अधिक विस्तार से समझा सकते हैं? धन्यवाद। –

+0

इस लिंक के लिए बहुत बहुत धन्यवाद! और मैं "एक बड़े एफबीओ में प्रस्तुत करने" का प्रयास करूंगा। –

+0

मैंने एक नया उत्तर पोस्ट किया है: अवधारणा एक जैसी है लेकिन आईओएस के नए संस्करणों में इसे करने का एक आसान तरीका है। – benzado

2

eglChooseConfig() पर glEnable(GL_MULTISAMPLE) पर EGL_SAMPLE_BUFFERS और EGL_SAMPLES पैरामीटर देखें।

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

+0

धन्यवाद, लेकिन आईफोन पर ओपनजीएल का कोई समर्थन नहीं है eglChooseConfig()। या क्या मुझे गलती है? लेकिन जब मैं GL_LINE_SMOOTH सेट करता हूं और GL_LINE_STRIP के साथ glDrawArrays का उपयोग करता हूं तो मेरे पास सुपर एंटीअलाइज्ड लाइन है। लेकिन जब मैं GL_TRIANGLES सेट करता हूं तो यह प्रभाव गायब हो जाता है। –

+0

ऐसा लगता है कि आप सही हैं। अजीब। वैसे भी, कुछ वैकल्पिक दृष्टिकोण के साथ एक धागा मिला और जवाब संपादित किया। – genpfault

+0

genpfault, हो सकता है। मैंने और साइटों को गुमराह किया है और महसूस कर रहा हूं कि केवल एक ही तरीका है - इस http://www.gamedev.net/community/forums/topic.asp?topic_id=548956 या इसी तरह का उपयोग करने का प्रयास करें। –

8

आईओएस 4.0 के रूप में, पूर्ण-स्क्रीन एंटी-एलियासिंग सीधे ओपनजीएल में ऐप्पल एक्सटेंशन के माध्यम से समर्थित है। मूल अवधारणा एपटेल के सुझाव के समान है: दृश्य को एक बड़े फ्रेमबफर पर प्रस्तुत करें, फिर इसे स्क्रीन के आकार के फ्रेमबफर पर कॉपी करें, फिर उस बफर को स्क्रीन पर कॉपी करें। अंतर यह है कि, बनावट बनाने और इसे एक ट्रैक्टर पर प्रस्तुत करने के बजाय, प्रतिलिपि/नमूना ऑपरेशन एक एकल फ़ंक्शन कॉल (विशेष रूप से, glResolveMultisampleFramebufferAPPLE()) द्वारा किया जाता है।

बफर सेट अप करने और अपने ड्राइंग कोड को संशोधित करने के विवरण के लिए, आप a tutorial on the Gando Games blog पढ़ सकते हैं जो ओपनजीएल ES 1.1 के लिए लिखा गया है; एक ही बात समझाते हुए a note on Apple's Developer Forums भी है।

pointing this out in another SO question के लिए Bersaelor के लिए धन्यवाद।

2

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

इस दृष्टिकोण का लाभ यह है कि आप एक बड़ी छवि प्रस्तुत नहीं कर रहे हैं, या एक बफर की प्रतिलिपि बना रहे हैं, या इससे भी बदतर, एक बफर से बनावट बनाते हैं, इसलिए प्रदर्शन में कोई प्रभाव नहीं पड़ता है।

+0

यह लिंक [हमारे ब्लॉग] (http://agileroute.com/blog/how-to-emulate-anti-aliasing-in-opengl-es-1-1) टूटा हुआ है –

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