Yazılımcının Günlüğü | YazilimGunlugu.Com
Arama
Makale Kategorileri
Üye Girişi
Şuanki online üyeler()
Aktif üye bulunmamaktadır.


Alpha Blending

Yazar: İbrahim Ersoy

Kategori: C#.NET & VB.NET

Eklenme Tarihi: 09.02.2008 11:47:06

Bu makalede sizlere 3D dünyasında sıkça kullanılan bir kavramdan bahsedeceğim
Alpha Blending nedir?

Bulunduğumuz dünya 3 çeşit objeden oluşur:Saydam,yarı-saydam ve saydam-olmayan objeler
 
Alpha Blending,yarı-saydam maddelere saydamlık özelliğini kazandırmaya yarayan bir teknolojidir.

Ne işe yarar bu Alpha Blending?

Alpha Blending için 2 tane pixel alıyoruz öncelikle.Birisi zaten arka-tamponda olan pixel diğeri de arka tampona gönderilecek pixel.

Kaynağın piksel rengi = (127,255,0,0); // buradaki 127 %50 saydamlığı gösterir,yani yarı-saydamlığı.Kırmızı(255),Yeşil(0),Mavi(0);
Hedefin piksel rengi= (127,0,0,255); // buda yine 127 %50 saydamlığı gösterir.yukarıdaki gibi.Kırmızı(0),Yeşil(0),Mavi(255);

Yeni rengimiz bu iki rengin Alpha Blending işlemine tabi tutulmasından sonra ortaya çıkacak yeni reng olacaktır.
 
Yeni Renk = Kaynak * Alpha/max_Alpha + Hedef * (max_Alpha-Alpha) / max_Alpha //fonksiyonu tamamiyle yazdım

Yukarıda yaptığımız renkleri kullanalım

yeni renk = 255 * 127/255 + 255 * (255-127) /127
yeni renk = %50 kırmızı + %100 mavi
yeni renk = Bu iki rengin karışımıdır. (%50 kırmızı ve %100 mavi)

Peki bunu projede nasıl kullanabileceğiz?

çok basit DirectX in bunun için hazır fonksiyon ve özellikleri bulunmaktadır.

Yapacağınız 3 satırlık koddur;

device.RenderState.SourceBlend =
Blend.SourceAlpha; //Kaynağa Blend uygula
device.RenderState.DestinationBlend =
Blend
.InvSourceAlpha; //Hedefe Blend Uygula
device.RenderState.AlphaBlendEnable =
true; //Alpha Blend i enable yap.Enable olmazsa yukarıda anlatılanların bir anlamı olmaz...

İyi Günler Dilerim...
Yazar Hakkında Yorum Yok Yorum Yaz Yazara ait diğer Makaleler
Tema
Anket
ASP.NET MVC'yi Projeleriniz de kullandınız mı?


En Çok Okunan Makaleler
En Son Eklenen Makaleler
Soru Merkezinde Bekleyenler
Ana Sayfa | Hakkımızda | Editörler | Yazarlar | RSS RSS | İletişim
Yazılım Günlüğü 2007-2009 © Tüm Hakları Saklıdır.