2011-08-07 14 views
7

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

Desired vs unwanted results

उत्तर

5

यह एक समस्या आप आमतौर पर बहुत अक्सर सामने आते हैं, 3 डी में भी है।

मैं कोकोस 2 डी से बहुत परिचित नहीं हूं, लेकिन जेनेरिक ओपनजीएल में इसे हल करने का एक तरीका फ्रेमबफर को अपने वांछित अल्फा चैनल से भरना है, मिश्रण मोड को glBlendFunc(GL_ONE_MINUS_DST_ALPHA, GL_DST_ALPHA) पर स्विच करें और आयताकार बनाएं। इसके पीछे विचार यह है कि आप फ्रेमबफर से ली गई वांछित पारदर्शिता के साथ एक आयत खींचते हैं, लेकिन प्रगति में मुखौटा क्षेत्र जिसे आपने खींचा है ताकि आपके बाद के आयतों को मुखौटा बनाया जा सके।

एक और दृष्टिकोण एक बनावट को पूरी बात प्रस्तुत करना या आकार बहुभुज कि ओवरलैप नहीं का उपयोग कर इकट्ठा करने के लिए है।

मुझे यकीन है कि है कि क्या Cocos2D इनमें से किसी भी समर्थन करता है नहीं कर रहा हूँ ...

+0

हाँ ठीक है। Fyi आप mixfunc संपत्ति के साथ sprite पर मिश्रण समारोह बदल सकते हैं। यानी 'mysprite.blendFunc = (ccBlendFunc) {GL_ONE_MINUS_DST_ALPHA, GL_DST_ALPHA}; ' –

2

मैं, पता नहीं है क्षमताओं विशेष रूप से Cocos2d क्या प्रदान करता है, लेकिन मैं दो विकल्प,

एक, उस तरह ओवरलैप नहीं देख सकते हैं लेकिन बल्कि अधिक जटिल ज्यामिति का निर्माण करें, जैसे कि प्रत्येक पिक्सेल केवल एक बार कवर किया जाता है,

दो, स्टैंसिल बफर का उपयोग करें जैसे कि आप खींचे जाते हैं, और किसी भी पिक्सेल को पहले से ही मुखौटा कर दें।

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