Ana Menü
· Ana Sayfa
· Dosyalar
· Dökümanlar
· Forum
· Günün Resmi
· Haber Arşivi
· WWW Linkleri
· Üye Listesi

     Forumlar

 strncpy ve strncpy_s
 Konu adi : Borland c++ Builder ile Amiral Batti
 Rady10 - YerliOyun
 Kabusta Kaybolmak
 Konsol da programı bekletmek
 Oyun programlama icin hangi programlama dilli ?
 flash! şanlıurfa bilgisayar oyununda(no rapid)
 Sevgilim Olur musun?
 Directx'e başlamak isteyenler bi bakın
 PSP programlama
 Flash tan php
 Bilgisyr oyunu yapmam için üniverstde hangi bölüme girmeliym
 www.arshiv.gen.ms
 Cimg.h ilgilenenler icin
 müttefik oyunu

Konu Disi
 Emraah
 Yeni sitemiz açıldı
 Kalp krizi durumunda ne yapılmalı?
 Oyun sektöründe hangi görevde çalışmak isterdiniz?
 Takım arkadaşı sorunu
 msn de renklı nıck
 pc hata veriyor ! YARDIM!!
 Gülmek isteyenler Buraya
 İnanılmaz hl 2 modu görüntüsü
 Computer Languages History

[ Forumlara Git ]


oyunyapimi.org: Forums

www.oyunyapimi.org :: Başlığı Görüntüle - Depth Test
 SSSSSS   AramaArama   Kullanıcı GruplarıKullanıcı Grupları   ProfilProfil   LoginLogin 

Depth Test

 
Bu forum kilitlenmiştir, yeni bir başlık açamazsınız, cevap gönderebilir ya da mesajları değiştirebilirsiniz   Bu başlık kilitlenmiştir, cevap yazamaz ya da mesajları değiştiremezsiniz    www.oyunyapimi.org Forum Ana Sayfası -> OyunYapımı
Önceki başlık :: Sonraki başlık  
Yazar Mesaj
Darklight



Kayıt: Oct 31, 2002
Mesajlar: 185
Nereden: Ankara

MesajTarih: Mon May 03, 2004 8:59 am    Mesaj konusu: Alıntıyla Cevap Ver

Selam simdi soyle bir gariplik var

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

/*-------------------------------------------------------------------------------------------
FONKSIYON ISMI:renderTextureBufferedObj
YAPTIGI IS:Ekran Buffered Objelerini Renderler
------------------------------------------------------------------------------------------*/
void renderTextureBufferedObj(entityObj *e){
int ivertexDimension=3;
int itexDimension=2;
glShadeModel(GL_FLAT);
glEnable(GL_DEPTH_TEST);
glBindTexture(GL_TEXTURE_2D, e->texID);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glEnableClientState(GL_VERTEX_ARRAY);
glTexCoordPointer(itexDimension,GL_FLOAT,0,e->pbuffered.t);
glVertexPointer(ivertexDimension,GL_FLOAT,0,e->pbuffered.v);
glDrawArrays(GL_QUADS,0,e->pbuffered.size);
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
glBindTexture(GL_TEXTURE_2D,0);
glDisable(GL_DEPTH_TEST);
}


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;

glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA,GL_ONE);
glDisable(GL_DEPTH_TEST);
glShadeModel(GL_FLAT);
glBindTexture(GL_TEXTURE_2D, e->texID);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glEnableClientState(GL_VERTEX_ARRAY);
glTexCoordPointer(itexDimension,GL_FLOAT,0,e->pbuffered.t);
glVertexPointer(ivertexDimension,GL_FLOAT,0,e->pbuffered.v);
glDrawArrays(GL_QUADS,0,e->pbuffered.size);
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
glBindTexture(GL_TEXTURE_2D,0);
glDisable(GL_BLEND);
glEnable(GL_DEPTH_TEST);

}
Başa dön
Kullanıcı profilini gör Kullanıcının web sitesini ziyaret et
MD-C



Kayıt: Feb 26, 2003
Mesajlar: 1258
Nereden: Dünya.Türkiye(54)

MesajTarih: Mon May 03, 2004 10:16 am    Mesaj konusu: Alıntıyla Cevap Ver

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...
Başa dön
Kullanıcı profilini gör E-Posta'yı gönder Kullanıcının web sitesini ziyaret et
Darklight



Kayıt: Oct 31, 2002
Mesajlar: 185
Nereden: Ankara

MesajTarih: Mon May 03, 2004 10:55 am    Mesaj konusu: Alıntıyla Cevap Ver

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ı ?

Başa dön
Kullanıcı profilini gör Kullanıcının web sitesini ziyaret et
cemuzunlar



Kayıt: Aug 03, 2003
Mesajlar: 49

MesajTarih: Mon May 03, 2004 11:00 am    Mesaj konusu: Alıntıyla Cevap Ver

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.

z-test'i acip kapamak icin: glEnable/glDisable( GL_DEPTH_TEST )
z-write'i acip kapamak icin: glDepthMaske( true/ false )
blending'i acip kapamak icin: glEnable/glDisable( GL_BLEND )
blending fonksiyonunu ayarlamak icin: glBlendFunc( ... )
Başa dön
Kullanıcı profilini gör E-Posta'yı gönder Kullanıcının web sitesini ziyaret et MSN Messenger
Black_Knight



Kayıt: Oct 23, 2002
Mesajlar: 286
Nereden: İstanbul/İzmir

MesajTarih: Mon May 03, 2004 7:55 pm    Mesaj konusu: Alıntıyla Cevap Ver

bi yerlerde okumustum eger iki tane seffaf polygon kesişiyorsa bunu halletmek için adamlar polygonları boluyorlardı nasıl yaparsın bilmem tabi :]

[addsig]
Başa dön
Kullanıcı profilini gör E-Posta'yı gönder Kullanıcının web sitesini ziyaret et MSN Messenger
Mesajları göster:   
Bu forum kilitlenmiştir, yeni bir başlık açamazsınız, cevap gönderebilir ya da mesajları değiştirebilirsiniz   Bu başlık kilitlenmiştir, cevap yazamaz ya da mesajları değiştiremezsiniz    www.oyunyapimi.org Forum Ana Sayfası -> OyunYapımı Tüm saatler GMT +2 Saat
1. sayfa (Toplam 1 sayfa)

 
Forum Seçin:  
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


Powered by phpBB 2.x.x © 200x phpBB Group
Türkçe Çeviri : Onur Turgay & Erdem Çorapçıoğlu
Türkçe Düzenleme: Alexis Canver
Version 2.x.x of PHP-Nuke Port by Tom Nitzschner © 200x www.toms-home.com




Web site powered by PHP-Nuke
Web site engine\'s code is Copyright © 2002 by PHP-Nuke. All Rights Reserved. PHP-Nuke is Free Software released under the GNU/GPL license.
Sayfa Üretimi: 0.194 Saniye