Direct3D; DirectX teknolojisinin alt kümesini oluşturan API'sidir. Tamamıyla 3D teknolojisi üzerine geliştirilmiştir. Genelde Video Oyunu Geliştiricilerinin kullandığı bir kütüphanesi vardır. Bu; direct3d.h dır.
Ön bilgi: İki boyutlu bir ortamı oluşturmak için iki ordinata, üç boyutlu bir ortam oluşturmak için üç ordinata ihtiyacımız var. İki boyut için ordinatlar X ve Y olup oluşan koordinat A(X,Y) ve üç boyut için ise ordinatlar X, Y, Z ordinatlarıdır, oluşan koordinat sistemi ise; B(X,Y,Z) dir.
Bildiğiniz gibi bir nokta, hangi boyutta oluşturulmuşsa o boyuta göre koordinat parametreleri oluşur. İki boyutlu bir çizim için ki örnek olarak doğru parçası oluşturmak için A ve B noktaları verelim... A noktası için X ve Y ordinatlarının parametresi olarak sırasıyla 30 ve 42 birimlerini verelim. Yani A(30,42) oluşmuş durumda. B noktası ise B(-30,-42) olsun. Evet şu anda birbirine simetrik iki nokta çizdik. Bu noktaların her birine VERTEX diyoruz. Yani iki boyutlu bir çizim için bağlantı noktaları...
Neden bağlantı noktası dedik? Çünkü; iki nokta arasına bir doğru parçası çizeceğiz ve bize lazım olan iki noktanın parametrelerini aldık. Ve bu sayede çizim işlemini gerçekleştirdik... Noktaların her biri bizim bağlantı noktalarımızdır. Üç boyutlu bir nesne yani küp için de aynı yöntem geçerli. Fakat küpü oluşturmak için minimum sekiz vertexe yani 8 noktaya ihtiyacımız var.
Eğer üç boyut hakkında bilgilendiyseniz veya bilgileriniz güncellendiyse ilk Direct3D örneğimizi verelim...
Direct3D teknolojisi primitive type (ilkel verileri) bile destekler. Örneğin programlamada, DirectX teknolojisini kullanıyorsanız ve koordinatları belli bir nokta kümesi verdiyseniz, yani örneğin;
- nokta1 için x=14, y=16, z=42; (bu; üç boyutlu üçgen çizimi için verilen birinci vertex; yani bağlantı noktası)
- nokta2 için x=21, y=72, z=15; (bu; üç boyutlu üçgen çizimi için verilen ikinci vertex; yani bağlantı noktası)
- nokta3 için x=12, y=15, z=12; (bu; üç boyutlu üçgen çizimi için verilen üçüncü vertex; yani bağlantı noktası)
koordinatlarını verip DirectX'in bize bu noktaları bir üçgen oluşturacak şeklinde deklare ettiysek, koordinatları verilen noktalar birbirleriyle birleştirilir ve uzayda üçboyutlu bir üçgen çizilir.
Bunun yanında Direct3D; Video Oyunu Geliştiricileri için; çeşitli üç boyutlu hesaplamaları üstlenir.
- Mesela; bir video oyunu geliştiricisi olan X firması, geliştirdiği video oyununda kullanmak üzere üç boyutlu grafikler tasarladı. Tasarlanan en küçük yapıdaki üç boyutlu grafik, yaklaşık 720 vertex yani bağlantı noktası içermekte. Varsayım olarak bu üç boyutlu grafik bir insan vücudu. Gövde kısmında 170 kadar, kol kısımlarında 120 kadar, bacak kısımlarında ise 200 kadar vertex var. Tanımlanmış diğer vertexler de grafiğin baş kısmını oluştursun... Eğer bu şirket oluşturulan grafikleri bir video oyununda kullancaksa, karakterin doğal olarak hareket etmesini de isteyecektir.
- Örneğin bazı oyunlarda olduğu gibi oluşturduğu karakterin bir arabaya binmesini, konuşabilmesini kısaca gerçek hayattaki bir insan gibi hareket etmesini ister. Yani bir vazo gibi katı durmamasını, her uzvunun (ellerinin, kollarının, bacaklarının) değişik şekillerde hareket etmelerini arzu eder. Bunu için bu üç boyulu grafiği oluşturan vertexler yani bağlantı noktalar hareket esnasında koordinatlarını değiştirirler.
- Yani yüzlerce vertex içinden bir tanesini ele alırsak; vertex(140, 270, 660) ise ele aldığımız vertex, koordinatları üç boyutlu grafiğin hareket esnasında koordinatlarını değiştirecek ve belki de yeni vertex; vertex(220, 290, 550) olacak.
- Şimdi; üç boyutlu bir grafiği oluşturan binlerce vertex, nasıl koordinatlarını değiştirir? Veya hangi işlemlerden sonra koordinatlarını değiştir sorusu için; çeşitli nesne taşıma formülleri, vektörler, matrisler işin içine giriyor dersek bu konu için yeterli olur çünkü bu konuda direct3d üzerinde duruyoruz.
- 3D nesnelerin hareket etmesi için kullanılan hesaplamalar ve formüller konu dahilinde değil...
- Bunca anlatımdan sonra Direct3D için şunu da belirtmenin zamanı geldi... İşte Direct3D; Video oyunu geliştiricileri için bu türlü ilkel veri tipleri ile uğraşmak zorunda kalmamalarını sağlar.
- Aslında Direct3D konusu buraya kadar da değil, bunca süredir anlattığımız üç boyutlu nesnelerin hareketlerinin sağlanmasından tutun da, Işık ve yansıma gibi olayların da üretimini sağlamasıdır.
- Yani sadece 3D hesaplamaları için değil; ışık ve bu gibi fiziksel hesaplamalarını da kendisi yapar. Tabii tahmin edersiniz ki, gereken argümanların verilmesi ile...
wikipedia, wiki, viki, vikipedia, oku, kitap, kütüphane, kütübhane, ara, ara bul, bul, herşey, ne arasanız burada,hikayeler, makale, kitaplar, öğren, wiki, bilgi, tarih, yukle, izle, telefon için, turk, türk, türkçe, turkce, nasıl yapılır, ne demek, nasıl, yapmak, yapılır, indir, ücretsiz, ücretsiz indir, bedava, bedava indir, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, resim, müzik, şarkı, film, film, oyun, oyunlar, mobil, cep telefonu, telefon, android, ios, apple, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, pc, web, computer, bilgisayar
Direct3D DirectX teknolojisinin alt kumesini olusturan API sidir Tamamiyla 3D teknolojisi uzerine gelistirilmistir Genelde Video Oyunu Gelistiricilerinin kullandigi bir kutuphanesi vardir Bu direct3d h dir On bilgi Iki boyutlu bir ortami olusturmak icin iki ordinata uc boyutlu bir ortam olusturmak icin uc ordinata ihtiyacimiz var Iki boyut icin ordinatlar X ve Y olup olusan koordinat A X Y ve uc boyut icin ise ordinatlar X Y Z ordinatlaridir olusan koordinat sistemi ise B X Y Z dir Bildiginiz gibi bir nokta hangi boyutta olusturulmussa o boyuta gore koordinat parametreleri olusur Iki boyutlu bir cizim icin ki ornek olarak dogru parcasi olusturmak icin A ve B noktalari verelim A noktasi icin X ve Y ordinatlarinin parametresi olarak sirasiyla 30 ve 42 birimlerini verelim Yani A 30 42 olusmus durumda B noktasi ise B 30 42 olsun Evet su anda birbirine simetrik iki nokta cizdik Bu noktalarin her birine VERTEX diyoruz Yani iki boyutlu bir cizim icin baglanti noktalari Neden baglanti noktasi dedik Cunku iki nokta arasina bir dogru parcasi cizecegiz ve bize lazim olan iki noktanin parametrelerini aldik Ve bu sayede cizim islemini gerceklestirdik Noktalarin her biri bizim baglanti noktalarimizdir Uc boyutlu bir nesne yani kup icin de ayni yontem gecerli Fakat kupu olusturmak icin minimum sekiz vertexe yani 8 noktaya ihtiyacimiz var Eger uc boyut hakkinda bilgilendiyseniz veya bilgileriniz guncellendiyse ilk Direct3D ornegimizi verelim Direct3D teknolojisi primitive type ilkel verileri bile destekler Ornegin programlamada DirectX teknolojisini kullaniyorsaniz ve koordinatlari belli bir nokta kumesi verdiyseniz yani ornegin nokta1 icin x 14 y 16 z 42 bu uc boyutlu ucgen cizimi icin verilen birinci vertex yani baglanti noktasi nokta2 icin x 21 y 72 z 15 bu uc boyutlu ucgen cizimi icin verilen ikinci vertex yani baglanti noktasi nokta3 icin x 12 y 15 z 12 bu uc boyutlu ucgen cizimi icin verilen ucuncu vertex yani baglanti noktasi koordinatlarini verip DirectX in bize bu noktalari bir ucgen olusturacak seklinde deklare ettiysek koordinatlari verilen noktalar birbirleriyle birlestirilir ve uzayda ucboyutlu bir ucgen cizilir Bunun yaninda Direct3D Video Oyunu Gelistiricileri icin cesitli uc boyutlu hesaplamalari ustlenir Mesela bir video oyunu gelistiricisi olan X firmasi gelistirdigi video oyununda kullanmak uzere uc boyutlu grafikler tasarladi Tasarlanan en kucuk yapidaki uc boyutlu grafik yaklasik 720 vertex yani baglanti noktasi icermekte Varsayim olarak bu uc boyutlu grafik bir insan vucudu Govde kisminda 170 kadar kol kisimlarinda 120 kadar bacak kisimlarinda ise 200 kadar vertex var Tanimlanmis diger vertexler de grafigin bas kismini olustursun Eger bu sirket olusturulan grafikleri bir video oyununda kullancaksa karakterin dogal olarak hareket etmesini de isteyecektir Ornegin bazi oyunlarda oldugu gibi olusturdugu karakterin bir arabaya binmesini konusabilmesini kisaca gercek hayattaki bir insan gibi hareket etmesini ister Yani bir vazo gibi kati durmamasini her uzvunun ellerinin kollarinin bacaklarinin degisik sekillerde hareket etmelerini arzu eder Bunu icin bu uc boyulu grafigi olusturan vertexler yani baglanti noktalar hareket esnasinda koordinatlarini degistirirler Yani yuzlerce vertex icinden bir tanesini ele alirsak vertex 140 270 660 ise ele aldigimiz vertex koordinatlari uc boyutlu grafigin hareket esnasinda koordinatlarini degistirecek ve belki de yeni vertex vertex 220 290 550 olacak Simdi uc boyutlu bir grafigi olusturan binlerce vertex nasil koordinatlarini degistirir Veya hangi islemlerden sonra koordinatlarini degistir sorusu icin cesitli nesne tasima formulleri vektorler matrisler isin icine giriyor dersek bu konu icin yeterli olur cunku bu konuda direct3d uzerinde duruyoruz 3D nesnelerin hareket etmesi icin kullanilan hesaplamalar ve formuller konu dahilinde degil Bunca anlatimdan sonra Direct3D icin sunu da belirtmenin zamani geldi Iste Direct3D Video oyunu gelistiricileri icin bu turlu ilkel veri tipleri ile ugrasmak zorunda kalmamalarini saglar Aslinda Direct3D konusu buraya kadar da degil bunca suredir anlattigimiz uc boyutlu nesnelerin hareketlerinin saglanmasindan tutun da Isik ve yansima gibi olaylarin da uretimini saglamasidir Yani sadece 3D hesaplamalari icin degil isik ve bu gibi fiziksel hesaplamalarini da kendisi yapar Tabii tahmin edersiniz ki gereken argumanlarin verilmesi ile