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 - directx alpha sorunu
 SSSSSS   AramaArama   Kullanıcı GruplarıKullanıcı Grupları   ProfilProfil   LoginLogin 

directx alpha sorunu
Sayfa 1, 2  Sonraki
 
Yeni Başlık Gönder   Cevap Gönder    www.oyunyapimi.org Forum Ana Sayfası -> OpenGL, DirectX
Önceki başlık :: Sonraki başlık  
Yazar Mesaj
devreci



Kayıt: Mar 04, 2005
Mesajlar: 256

MesajTarih: Thu Jun 30, 2005 8:30 pm    Mesaj konusu: directx alpha sorunu Alıntıyla Cevap Ver

zbuffer'e veri yazıldığı için saydam yüzeyler sanki katı madde gibi algılanıyor ve arkadaki şekiller gözükmüyor.
mesela araba yaptık diyelim camlar saydam olacak ama bi türlü yapamıyom tamam saydam oluyoda koltuklar ,yol ve adamın kellesi görünmüyor.

burda küçük bişey kodladım ne kadar kadar uğraştımsa düzeltemedim

http://www.free-webhosting.com/devreci/progs/deney.exe

kum saatinin camı güzel çalışıyor fakat camın arasındaki şekiller gözükmüyor ancak zbufferi kapatırsak veya camı en son cizdirirsek doğru çalışıyor. bu konuda yardım ederseniz sevinirim.
kaynak kodu var kodu değiştirip yollarsanız daha çok sevinirim.

birde gl de bu sorun varmı yoksa nasıl gideriliyor.
Başa dön
Kullanıcı profilini gör E-Posta'yı gönder Kullanıcının web sitesini ziyaret et
LorenSoth



Kayıt: Oct 12, 2004
Mesajlar: 99

MesajTarih: Thu Jun 30, 2005 9:01 pm    Mesaj konusu: Alıntıyla Cevap Ver

http://www.opengl.org/resources/faq/technical/transparency.htm#blen0060
Opengl için şu sitedeki soru ve cevaplara bi bakın, genelde bu sorun için back to front cizdirmen gerekiyor sorunu dogru anladıysam. Kolay gelsin.
Başa dön
Kullanıcı profilini gör E-Posta'yı gönder
scg



Kayıt: Oct 30, 2002
Mesajlar: 38
Nereden: Ankara

MesajTarih: Thu Jun 30, 2005 9:29 pm    Mesaj konusu: Alıntıyla Cevap Ver

Önce opak nesneleri çizdir (normal z buffer işlemleri ile..)
Sonra transparan objeleri çizdir. (fakat z buffer a yazma , opakların z sini oku sadece.)

şöyle bişeyler:
Kod:

d3d9->SetRenderState( D3DRS_ZWRITEENABLE, TRUE );
OpaklariCiz( );
d3d9->SetRenderState( D3DRS_ZWRITEENABLE, FALSE );
TransparanlariCiz( );


Başa dön
Kullanıcı profilini gör
asyncore



Kayıt: Jan 13, 2004
Mesajlar: 110
Nereden: Gevrek, darı ve çiğdem yenen yerden

MesajTarih: Thu Jun 30, 2005 9:43 pm    Mesaj konusu: Alıntıyla Cevap Ver

Merhaba hocam, seni C++ & DX yazarken görmek ne kadar güzel Cool
LorenSoth hocama (evet back to front çizdirmelisin) ek olarak alterantif yöntem ise şeffaf çizim yapaken z-bufferı kapatmaktır. Tabi ki bunun için şeffaf yüzeyler çizme işini sona bırakırsan daha iyi olur.

Z-Bufferı Aç
Katı yüzeyleri çiz
Z-Bufferı Kapat
Şeffaf yüzeyleri çiz

Senin örneğinde cam için blend doğru olmuyor sanırım. Sebebi ise kodunda farkettiğim kadarıyla

d3d9->SetRenderState(D3DRS_SRCBLEND,D3DBLEND_SRCCOLOR);
d3d9->SetRenderState(D3DRS_DESTBLEND,D3DBLEND_BOTHSRCALPHA);

Source rengi doğru ama destination rengi hatalı.
Mesela camda kullandığın alphanın anlamına göre
Alpha = 0 iken cam tamamen şeffaf ise

d3d9->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);d3d9->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);

Source burada şeffaf yüzeylerin rengini
Destination ise frame buffer'da yazılı rengi yani katı yüzeylerin rengini ifade etmektedir.

Bkz: DX9 SDK
Başa dön
Kullanıcı profilini gör E-Posta'yı gönder
asyncore



Kayıt: Jan 13, 2004
Mesajlar: 110
Nereden: Gevrek, darı ve çiğdem yenen yerden

MesajTarih: Thu Jun 30, 2005 9:47 pm    Mesaj konusu: Alıntıyla Cevap Ver

Z-Bufferı kapatmak değil tabiki, Z-Buffer'a yazmayı kapatıcaksın.
scg yazmasa daldım gidiyorum Smile
İkisi farklı şeyler, yanlış anlaşılmaya mahal vermeyeyim
Başa dön
Kullanıcı profilini gör E-Posta'yı gönder
devreci



Kayıt: Mar 04, 2005
Mesajlar: 256

MesajTarih: Thu Jun 30, 2005 11:09 pm    Mesaj konusu: Alıntıyla Cevap Ver

arkadaşlar bu çok önemli konuymuş çünkü gl dede aynı hata var bir örnekte gördüm orada gldisable(zbuffer) gibi bişey vardı .

beyler tamam doğruda sizin dediğiniz yöntemle eğer zbuf'a çizimi engellersek üçgeni çizdirdikden sonra başka bir üçgen çizdirirsek uzaklık
ne olursa olsun saydam yüzeyin üstüne çizer yani oyun mahvolur.

saydamları en son çizdirirsek ve write'yi disable yaparsak işimiz çok zorlaşır çünkü saydam objeleri ensona ayarlamak baya uzun iş.

tamam bu işide yapdık diyelim bu seferde iki saydam objeyi hangisini önce hangisini sonra nasıl ayarlayacağız ??

birde operation flaspoint diye bi oyunda bu sorun yok arabaların camından içerisi ve hatta diyer cam ve gölgelerde hafif karanlık gibi durumlar ayarlanmış
Başa dön
Kullanıcı profilini gör E-Posta'yı gönder Kullanıcının web sitesini ziyaret et
asyncore



Kayıt: Jan 13, 2004
Mesajlar: 110
Nereden: Gevrek, darı ve çiğdem yenen yerden

MesajTarih: Thu Jun 30, 2005 11:14 pm    Mesaj konusu: Alıntıyla Cevap Ver

Hayır işte saydam cismi üzerine çizmesin dize z-bufferı açık bırakıp yazmayı kapatıyoruz. Yani test hala yapılıyor. Bufferdaki değere göre yine uzaklığa göre sıralanmış oluyor. Anlatabildim mi?
Bu yüzden z-bufferı kapatmakla z-buffera yazmayı kapatmak farklı dedim.

İki saydam yüzey için de bu yöntem sana güvence sağlar sorun olmaz. Sen dene göreceksin.
Başa dön
Kullanıcı profilini gör E-Posta'yı gönder
devreci



Kayıt: Mar 04, 2005
Mesajlar: 256

MesajTarih: Thu Jun 30, 2005 11:17 pm    Mesaj konusu: Alıntıyla Cevap Ver

birde şu back to front ne demek ?
benim aklıma bu iş için ayarlanmış özel bufferin olmasından başka bişey gelmiyor. stencil,zbuffer gibi alpha buffer olmalı sdk da baktım öyle bişey yok
Başa dön
Kullanıcı profilini gör E-Posta'yı gönder Kullanıcının web sitesini ziyaret et
LorenSoth



Kayıt: Oct 12, 2004
Mesajlar: 99

MesajTarih: Thu Jun 30, 2005 11:19 pm    Mesaj konusu: Alıntıyla Cevap Ver

devreci demiş ki:
birde şu back to front ne demek ?
benim aklıma bu iş için ayarlanmış özel bufferin olmasından başka bişey gelmiyor. stencil,zbuffer gibi alpha buffer olmalı sdk da baktım öyle bişey yok


hocam işte bakış açısına göre arkada kalacak olan polygon u ilk cizmek onun önündekini sonra cizmek. Yani sıra önemli.
Başa dön
Kullanıcı profilini gör E-Posta'yı gönder
asyncore



Kayıt: Jan 13, 2004
Mesajlar: 110
Nereden: Gevrek, darı ve çiğdem yenen yerden

MesajTarih: Thu Jun 30, 2005 11:20 pm    Mesaj konusu: Alıntıyla Cevap Ver

Alpha buffer diye birşey yok buna gerek de yok.
Back-to-front sahnedeki objelerin çizim sırasını kameraya uzaklığına göre uzaktan yakına doğru sıralama işlemidir. Bir dizi ile bile kolayca halledilirisin bunu.

Bir de saydam objeleri sona saklamak neden uzun iş ki anlamadım? Sadece katılardan sonra çizdireceksin o kadar
Başa dön
Kullanıcı profilini gör E-Posta'yı gönder
devreci



Kayıt: Mar 04, 2005
Mesajlar: 256

MesajTarih: Thu Jun 30, 2005 11:21 pm    Mesaj konusu: Alıntıyla Cevap Ver

arkadaşlar bu çok zor bi iş yandık desenize
Başa dön
Kullanıcı profilini gör E-Posta'yı gönder Kullanıcının web sitesini ziyaret et
devreci



Kayıt: Mar 04, 2005
Mesajlar: 256

MesajTarih: Thu Jun 30, 2005 11:24 pm    Mesaj konusu: Alıntıyla Cevap Ver

vertexlerin bana olan uzaklığını x*x+y*y+z*z diyerek kolayca bulabilirim
buna göre sıralayabilirim ama buda işime yaramaz gibime geliyor
Başa dön
Kullanıcı profilini gör E-Posta'yı gönder Kullanıcının web sitesini ziyaret et
devreci



Kayıt: Mar 04, 2005
Mesajlar: 256

MesajTarih: Fri Jul 01, 2005 12:02 am    Mesaj konusu: Alıntıyla Cevap Ver

sağulun var olun arkadaşlar
gece yarısı yataktan zıpladım yapdım uyku tumadı yau Very Happy

http://www.free-webhosting.com/devreci/progs/3ddeney2.exe

işimiz baya zorlaştı ama olsun.
yaw benim aklımda hala "alpha buffer" düşü var.

birde iyi çalışıyomu şu deney.
Başa dön
Kullanıcı profilini gör E-Posta'yı gönder Kullanıcının web sitesini ziyaret et
asyncore



Kayıt: Jan 13, 2004
Mesajlar: 110
Nereden: Gevrek, darı ve çiğdem yenen yerden

MesajTarih: Fri Jul 01, 2005 8:29 am    Mesaj konusu: Alıntıyla Cevap Ver

Yine olmamış
Kum saatinin çerçevesini saydam yapmışsın. Bir sütunun içinden taban, tavan ve diğer sütunlar gözüküyor. Sütunları çizerken alphayı kapalı tutacaksın. Camı çizerken açacaksın sadece.
Buna ek olarak camdaki blend hatası halen sürüyor. Sana attığım ilk mesajdaki şekilde yapmazsan camdan doğru saydam görüntü alamazsın.
Başa dön
Kullanıcı profilini gör E-Posta'yı gönder
vmeydaneri



Kayıt: Dec 08, 2004
Mesajlar: 583
Nereden: Ankara

MesajTarih: Fri Jul 01, 2005 11:30 am    Mesaj konusu: Alıntıyla Cevap Ver

modeli ayir :

->Modelin Cam kismi
->Modelin Cam olmiyan kismi

bunu her polygona TUR vererek sagliyabilirsin.

->Cam kisma = 1
->Cam olmayan kisma = 0

dersek

Cizerken :

if(POLYGON == 0)
{
// cam olmayan kismi ciz
}
if(POLYGON == 1)
{
//cam olan kismi ciz
}

boylelikle her zaman blend uyguladigin nesne en son cizilecek ve allttaki nesneler gozukecetir.

zaten diger arkadaslar olayi aciklamislar...Ben indirdigim programdaki olayi anlatmak icin yazdim..
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:   
Yeni Başlık Gönder   Cevap Gönder    www.oyunyapimi.org Forum Ana Sayfası -> OpenGL, DirectX Tüm saatler GMT +2 Saat
Sayfa 1, 2  Sonraki
1. sayfa (Toplam 2 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.166 Saniye