2010-11-02 19 views
9

ile karıştırmak GLPaint örnek koduna dayanan küçük bir boya uygulamasına sahibim. İyi çalışıyor. Benim Sorun şu ki, daha önce çizilen dokuları silen bir "fırça" yerleştirmem gerekiyor.Alfa değerleri silmek için bir dokuyu OpenGL

Amacım, yumuşak kenarları olan bir silgiye sahip olmaktır. Şu anda ben sadece çizim için kullanılan aynı doku aldı ama sonuç kare, dikdörtgen silgi olduğunu

glBlendFunc(GL_ZERO, GL_ZERO); 

için

glBlendFunc(GL_SRC_ALPHA, GL_ONE); 

gelen karıştırma fonksiyonları geçti. Tamam, ama aslında istediğim şey değil. Yumuşak kenarlara ihtiyacım var. Kare bir dikdörtgen olmayan yuvarlak bir silgi yapmak istiyorum.

Bunu nasıl yapacağınızı tahmin edebilecek misiniz? Veya kendi özel harmanlama işlevimi oluşturmanın bir yolu olup olmadığını biliyor musunuz?

+0

Ben böyle bir şey istediğini düşünüyorum:

Bu sayfa olası modları tam listesini içerir http://stackoverflow.com/questions/10373847/producing-eraser-effects-using-libgdx-and Aslında kendi problemim olan -opengl-es ve bunu nasıl başaracağımı hala takılıyorum. – Rafay

cevap

11

Dokunun arka plan rengini biliyor musunuz? Eğer öyleyse, "silme" yerine, sadece arka plan üzerine resim çizebilirsiniz. Bu biraz daha basit olurdu, çünkü sadece rengi değiştirecek ve karıştırma modunu değiştirmeyeceksin. Eğer karıştırma ile yapmak gerekirse

, deneyin: Bu tam alfa alanında sıfır kullanın ve fırça alfa kapalı kaybolur gibi mevcut renge geri solacak

glBlendFunc(GL_ZERO, GL_ONE_MINUS_SRC_ALPHA); 

. http://www.opengl.org/sdk/docs/man/xhtml/glBlendFunc.xml

+0

Arka plan bir görüntüdür, bu yüzden üzerine resim çizemiyorum. Başka çözümünüz var mı? –

+0

Önerdiğim karıştırma işlevi, eğer mevcutsa denemeye değer. GL_ZERO/GL_ZERO çalıştığı takdirde, sıfır ve ters alfa kullanmalıdır. – ssube

+0

GlBlendFunc (GL_ZERO, GL_ONE_MINUS_SRC_ALPHA) işlevini deniyorum, ancak silemiyorum bile. –