eger asagidaki kodda glEnable(GL_DEPTH_TEST) acmassak yüzeylerin renderlenme sirasi Z koordinatina gore yapmadan yapacagi için on yüzeyi gormeniz gereken yerde
arka yüzeyi gorme gibi sorunlarla karsilasirsiniz
ama blending yapiyorsaniz Z bufferi kullanmaniz anlamsız cunku arka yüzeyleri feda edemessiniz ondekilerle belli oranda karismasini istediginiz için onlarinda en geriden öne dogru renderlenmesi gerekir
Z'ye gore en arkadakini Renderle ve fragmente bunun için diyelim ki
Z -100 Pixel R=0, G=200 Blue=100
Z - 70 Pixel R=100, G=0, Blue=0 %60 = Gecirgen
Z - 50 Pixel R=100, G=20, Blue=0 %40 = Gecirgen
bunlari en arkadakinden one dogru tek etk hesaplamasi gerekiyor, OpenGL burda bu sekilde bir yollamı renderliyor.
Asagidaki fonksiyonda baktigimizda
glEnable(GL_DEPTH_TEST) yaptigimizdada sistem
glDisable(GL_DEPTH_TEST) yaptigimizdada farkli bir sonuc vermemekte
yani GL_BLEND aktif oldugunda GL_DEPTH_TEST pek bir ise yaramiyor
otamatik olarak OpenGL tarafından kullanılmıyormu ?
/*-------------------------------------------------------------------------------------------
FONKSIYON ISMI:renderTextureBlendBufferedObj
YAPTIGI IS:Ekran Buffered Objelerini Renderler
------------------------------------------------------------------------------------------*/
void renderTextureBlendBufferedObj(entityObj *e){
int ivertexDimension=3;
int itexDimension=2;
Kayıt: Feb 26, 2003 Mesajlar: 1258 Nereden: Dünya.Türkiye(54)
Tarih: Mon May 03, 2004 10:16 am Mesaj konusu:
Darklight, doğruyu söylemek gerekirse tam okumadım yazını, fakat demek istediğini sanırım anladım (heralde ) GL_DEPTH_TEST olayı ortamda ışık olduğunda hisedilebiliyor ama dediğin gibi Işıksız bir ortamda GL_DEPTH_TEST vamış yada yokmuş pek bir fark yok...
Ortamda isik yok demek istedigim
Blending acik oldugunda Depth testiniz acik olsada OpenGL bir sekilde Depth testi es geciyor. Bunu yukarda yaptıgım teslerden anladım. Ama soyle olmasini beklerdim
Depth Test aciksa sistemin blending islemini yapamaması
cunku Pipelinede ilk once Depth Test islemi sonrada Blending islemi yapilmakta diye biliyorum. Bu konuda fikri olan var mı ?
OpenGL bu konuda herhangi bir yardim da bulunmaz. Burada genel yontem soyledir:
- Once opaque( gecirgen olmayan, alphasiz, blending gerektirmeyen ) yuzeyler z-test ve z-write acik olarak cizilir.
- Sonra transparan( gecirgen, alphali, blending gerektiren ) yuzeyler arkadan one dogru siralanir. Blending acilir. Sirali liste z-test ve z-write kapali olarak cizilir. Cizim sirasinda, her yuzey icin blending fonksiyonu, ilgili yuzeyin ciziminden once ayarlanir.
Bu forumda yeni konular açamazsınız Bu forumdaki mesajlara cevap veremezsiniz Bu forumdaki mesajlarınızı değiştiremezsiniz Bu forumdaki mesajlarınızı silemezsiniz Bu forumdaki anketlerde oy kullanamazsınız