बैकग्राउंड पिक्सेल का रंग कैसे पलटना है


10

मैं जावा और jMonkeyEngine का उपयोग करके एक गेम और मैप एडिटर लिख रहा हूं। मैप एडिटर में, मुझे वायरफ्रामेड गोले द्वारा किया गया ब्रश मिला है। मेरी समस्या यह है: मैं इसे हर जगह दिखाई देना चाहता हूं, इसलिए मैं इस ब्रश के "पीछे" पिक्सेल का रंग उल्टा करना चाहता हूं। मैं इसे खंड shader (GLSL) के साथ करना चाहता था, लेकिन मुझे नहीं पता कि इस पिक्सेल का रंग कैसे प्राप्त किया जाए।


क्या jMonkeyEngine प्रक्रिया के बाद के प्रभावों का समर्थन करता है? आपको शायद इस तरह जाना होगा।
sam hocevar

हाँ, jMonkeyEngine प्रक्रिया के बाद के प्रभावों का समर्थन करता है, लेकिन मैं इस समय उनसे बहुत परिचित नहीं हूँ। सुझाव के लिए धन्यवाद।
m4tx

हम्म, कोई बात नहीं, वहाँ सरल तरीके हैं। मैं ठीक से जवाब देने की कोशिश करूंगा।
सैम होसेवर

क्या आप glLogicOp (GL_XOR) का उपयोग कर सकते हैं? opengl.org/sdk/docs/man/xhtml/glLogicOp.xml
एडम

1
ध्यान दें कि उलटा आपको कॉर्नर मामलों के पूरे समूह में दृश्यता की गारंटी नहीं देता है, जैसे कि असंतृप्त ग्रेज़, और कई अन्य मामलों के लिए खराब दृश्यता प्रदान करता है।
लार्स विकलंड

जवाबों:


16

ऐसा करने का त्वरित और आसान तरीका निम्नलिखित मापदंडों के साथ मानक सम्मिश्रण समीकरण का उपयोग करना है:

glEnable(GL_BLEND);
glBlendFunc(GL_ONE_MINUS_DST_COLOR, GL_ZERO);

यदि srcस्रोत रंग (आपकी नई वस्तु से एक) है और dstगंतव्य रंग है (वह जो फ्रेम बफ़र में है) यह नए रंग की गणना निम्नानुसार करेगा:

new = src * (1 - dst) + dst * 0
    = src * (1 - dst)

तो आपको बस सेट करने की जरूरत है src = 1, यानी। सफेद, और आपको उलटा वीडियो मिलेगा। जीएलएसएल टुकड़ा शैडर होगा:

void main(void) {
    gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);
}

4
लगता है जैसे आप अपने अल्फा सम्मिश्रण जानते हैं!
बोब्बोबो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.