2010-11-02 20 views
9

के साथ धीरे-धीरे अल्फा मानों को मिटाने के लिए एक बनावट को मिलाकर मेरे पास एक छोटा सा रंग एप्लिकेशन है जो GLPaint नमूना कोड पर आधारित था। यह ठीक काम कर रहा है। मेरी समस्या यह है कि मुझे एक "ब्रश" लागू करने की आवश्यकता है जो पहले से तैयार किए गए बनावट को मिटा देता है।ओपनजीएल

मेरा लक्ष्य एक इरेज़र होना है जिसमें मुलायम किनारों हैं। अभी मैं सिर्फ एक ही बनावट जो मैं ड्राइंग के लिए इस्तेमाल लिया, लेकिन

को

glBlendFunc(GL_SRC_ALPHA, GL_ONE); 

से सम्मिश्रण कार्यों बंद

glBlendFunc(GL_ZERO, GL_ZERO); 

परिणाम एक वर्ग आयताकार रबड़ है। यह ठीक है लेकिन यह वास्तव में मैं नहीं चाहता हूं। मुझे मुलायम किनारों की आवश्यकता है। मैं एक गोल आयताकार बनाना चाहता हूं जो एक वर्ग आयताकार नहीं है।

क्या आपके पास कोई अनुमान है कि इसे कैसे प्राप्त किया जाए? या क्या आप जानते हैं कि मेरा खुद का कस्टम ब्लेंडिंग फ़ंक्शन बनाने का कोई तरीका है या नहीं?

+0

मुझे लगता है कि आप कुछ इस तरह करना चाहता था:

यह पृष्ठ संभव मोड की एक पूरी सूची है http://stackoverflow.com/questions/10373847/producing-eraser-effects-using-libgdx-and -opengl-es जो वास्तव में मेरी खुद की समस्या है और मैं अभी भी इसे प्राप्त करने के तरीके पर अटक गया हूं। – Rafay

उत्तर

11

क्या आप बनावट के पृष्ठभूमि रंग को जानते हैं? यदि ऐसा है, तो "मिटाने" के बजाय, आप बस उस पर पृष्ठभूमि पेंट कर सकते हैं। यह कुछ हद तक आसान होगा, क्योंकि आप केवल रंग बदलेंगे, न कि मिश्रण मोड।

आप सम्मिश्रण के साथ यह करने के लिए की जरूरत है, की कोशिश:

glBlendFunc(GL_ZERO, GL_ONE_MINUS_SRC_ALPHA); 

यह पूर्ण अल्फा के क्षेत्र में शून्य का उपयोग करेगा और मौजूदा रंग में वापस फीका के रूप में ब्रश के अल्फा बंद fades। http://www.opengl.org/sdk/docs/man/xhtml/glBlendFunc.xml

+0

पृष्ठभूमि एक छवि है, इसलिए मैं इसे पेंट नहीं कर सकता। क्या आपके पास दूसरा समाधान है? –

+0

मैंने जो ब्लेंडिंग फ़ंक्शन सुझाया है, वह प्रयास करने योग्य है, अगर यह उपलब्ध है। यदि GL_ZERO/GL_ZERO काम करता है, तो शून्य का उपयोग करके और उलटा अल्फा भी होना चाहिए। – ssube

+0

मैं फ़ंक्शन glBlendFunc (GL_ZERO, GL_ONE_MINUS_SRC_ALPHA) का प्रयास करता हूं, लेकिन यह भी मिटा नहीं सकता है। –