Hoşgeldiniz: OyunYapimi.org
 
Ara
Konular
  Üye Olun!    
Ana Menü
 Ana Sayfa
 Anketler
 Dosyalar
 Dökümanlar
 Forum
 Haber Arşivi
 WWW Linkleri
 Üye Listesi

Forumlar
Forumlarda Arama
 
[ Ara ]
Son yazilanlar

free ebooks - 2004-05-16 14:47 free ebooks...
oyun yazmak için - 2004-05-15 11:13 oyun yazmak için...
Sinus dalgası - 2004-05-14 19:21 Sinus dalgası...
Demosu yakında... - 2004-05-06 15:11 Demosu yakında......
Depth Test - 2004-05-03 20:55 Depth Test...
forum mesajlarini duzenlemek - 2004-05-03 19:34 forum mesajlarini ...
Başka Programlara Erişmek - 2004-05-03 17:44 Başka Programlara ...
Güzel bir e-book bağlantısı.. - 2004-05-03 16:06 Güzel bir e-book b...
Okyanus Dalgasi - 2004-05-03 16:00 Okyanus Dalgasi...
3d Shoot em up - 2004-05-03 15:57 3d Shoot em up...
Esnek Güç - 2004-05-03 13:32 Esnek Güç...
UltimateGameProgramming.com - 2004-05-03 12:29 UltimateGameProgra...
Function Pointer Nedir ne ise yarar - 2004-05-03 01:35 Function Pointer N...


Konu Disi


LAMER - 2004-05-10 01:58 LAMER...
anasafa yok forum var - 2004-05-08 16:01 anasafa yok forum ...
Anasayfa Kapali  Fakat.. - 2004-05-06 15:05 Anasayfa Kapali F...
Texture Arşivi - 2004-05-03 01:39 Texture Arşivi...
Yeni Kitap: Elektronik Hobi - 2004-05-03 00:29 Yeni Kitap: Elektr...
3DTURK - 2004-05-02 23:27 3DTURK...
Online Oyun - 2004-05-02 19:27 Online Oyun...


Splatt Forum


Konuyu açan kişi: deniz
Forum:  OyunYapımı
Cevaplayan:  Depth Test

Ayarlar Kullanıcı girişi Yeni bir konu aç
kullanıcı adı
Şifre
Mesaj Icon                 
                
                
                
                
                
Mesajlar

HTML : Açık

BBCode : Açık

Resim : Kapalı

Mesajınıza Eklemek için tıkla Smilies:

:-):-(:-D;-):-08-):-?:-P:-|:-|:-|:-|

Mesajınıza Eklemek için tıkla BBCode:

BBCode: Web Address BBCode: Email Address BBCode: Load Image from Web BBCode: Bold Text BBCode: Italic Text
BBCode: Quote BBCode: Code BBCode: Open List BBCode: List Item BBCode: Close List
Ayarlar Mesajda HTML kulanma izni yok
İzin yok. BBCode bu mesaj içinde
İzin yok. Smilies bu mesaj içinde
Kuruluş (Bu kullanıcı sayfasının özellikleri.)
   

Cevabın önizlemesi
Black_Knight



Kayıt eden :
23-10-2002


Mesajlar :131
Kimden :İstanbul/İzmir

OFF-Line

 Yeni Mesaj Postalandı!2004-05-03 20:55   
bi yerlerde okumustum eger iki tane seffaf polygon kesişiyorsa bunu halletmek için adamlar polygonları boluyorlardı nasıl yaparsın bilmem tabi :]


-----------------
Shadowy Tree | World of Entaria
Omnium rerum principia parva sunt.
Oyun Yapimi Irc Kanalı -irc.EnterTheGame.com #oyunyapimi

cemuzunlar



Kayıt eden :
03-08-2003


Mesajlar :15

OFF-Line

 Yeni Mesaj Postalandı!2004-05-03 12:00   
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( ... )

Darklight



Kayıt eden :
31-10-2002


Mesajlar :120
Kimden :Ankara

OFF-Line

 Yeni Mesaj Postalandı!2004-05-03 11:55   
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ı ?



MD-C



Kayıt eden :
26-02-2003


Mesajlar :582
Kimden :Sakarya

OFF-Line

 Yeni Mesaj Postalandı!2004-05-03 11:16   
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...

Darklight



Kayıt eden :
31-10-2002


Mesajlar :120
Kimden :Ankara

OFF-Line

 Yeni Mesaj Postalandı!2004-05-03 09:59   
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);

}


Splatt Forum By: Splatt.it
Versione: 3.1






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.
} include('footer.php'); ?>