Arka plan pikselinin rengi nasıl ters çevrilir


10

Java ve jMonkeyEngine kullanarak bir oyun ve harita editörü yazıyorum. Harita editöründe, tel çerçeveli küre tarafından yapılan bir fırçam var. Benim sorunum: Ben her yerde görünür yapmak istiyorum, bu yüzden bu fırçanın "arkasında" pikselin rengini ters çevirmek istiyorum. Parça gölgelendirici (GLSL) ile yapmak istedim, ancak bu pikselin rengini nasıl alacağımı bilmiyorum.


JMonkeyEngine işlem sonrası efektleri destekliyor mu? Muhtemelen bu şekilde gitmelisin.
sam hocevar

Evet, jMonkeyEngine işlem sonrası efektleri destekler, ancak şu anda bunlara çok aşina değilim. Öneri için teşekkürler.
m4tx

Hmm, boşver, daha basit yollar var. Doğru cevap vermeye çalışacağım.
sam hocevar

GlLogicOp (GL_XOR) kullanabilir misiniz? opengl.org/sdk/docs/man/xhtml/glLogicOp.xml
Adam

1
İnversiyonun, doymamış griler gibi bir dizi köşe durumunda görünmeyi garanti etmediğini ve diğer birçok durum için zayıf görünürlük sağladığını unutmayın.
Lars Viklund

Yanıtlar:


16

Bunu yapmanın hızlı ve kolay yolu, standart karıştırma denklemini aşağıdaki parametrelerle kullanmaktır:

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

Eğer srckaynak rengi (yeni nesneden bir) ve dsthedef renk şöyle yeni bir renk hesaplamak olacak (framebuffer'ın içindedir biri):

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

Yani ayarlamanız yeterlidir src = 1, yani. beyaz ve ters video elde edersiniz. GLSL fragman gölgelendiricisi:

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

4
Alfa karışımını biliyormuşsun gibi geliyor!
bobobobo
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.